标签: oracle11g

ORA-00904: 无效标识符 - 创建一个简单的表

我正在尝试创建一个简单的表,但收到错误消息:

ORA-00904 - 无效标识符

我不知道为什么。我没有看到任何可能导致问题的东西(使用 Oracle 11g Express):

CREATE TABLE Measurements(
  MeasureAmountID       SMALLINT        PRIMARY KEY,
  MeasurementDescription    VARCHAR(255),
);
Run Code Online (Sandbox Code Playgroud)

oracle oracle11g

0
推荐指数
1
解决办法
334
查看次数

根据某些条件修改列值

鉴于下表:

 ... |  item  | type | ...
 ... |    A   |  1   | ...
 ... |    B   |  2   | ...
 ... |    A   |  2   | ...
 ... |    A   |  3   | ...
 ... |    B   |  3   | ...
 ... |    A   |  2   | ...
Run Code Online (Sandbox Code Playgroud)

让我们通过配对(A1、B2、A2 等)来调用项目。表中有一个错误,其中 A3 实际上应该是 C3。

我想编写一个查询,如果行返回 A3,它将返回行并将项目列更改为 C。

不起作用的示例查询:

SELECT (item like 'A' ? (type == 3? 'C' : 'A') : item) as "item", type from table; 
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

"item" | …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

0
推荐指数
1
解决办法
2万
查看次数

如何用“X”屏蔽手机号码部分

使用 Oracle SQL,如何用“X”替换某些数字。

例如,如果我有一个随机手机号码:

0400 100 200 or 0400100200

我想屏蔽这个数字:

0400 XXX XXX and 0400XXXXXX
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用 TRANSLATE,但不确定这是否是最佳方法。

sql oracle11g

0
推荐指数
1
解决办法
2929
查看次数

更改数据库打开 - Oracle11g

由于我遇到的一些问题,我正在尝试在 oracle 11g 上执行以下查询。但它的抛出错误。任何人都可以帮忙

查询:更改数据库打开

* 第 1 行错误:ORA-00600:内部错误代码,参数:[kcratr_nab_less_than_odr]、[1]、[505]、[33717]、[33719]、[]、[]、[]、[]、[] , [], []

提前致谢

oracle oracle11g ora-00600

0
推荐指数
1
解决办法
5705
查看次数

ORA-00918: 使用枢轴时列定义不明确

有人可以看看我的查询。当我尝试取消对任何注释字段的注释时,oracle 会抛出错误。

SELECT * 
FROM   ( 
              SELECT ratfac.rating_id, 
                     ratfac.label_en, 
                     ratfac.ratingmodel_factor_id, 
                     ratfac.weight, 
                     ratfac.rating_calculated, 
                     ratfac.rating, 
                     ratfac.rating_adjusted, 
                     ratfac.override_comment, 
                     ratfac.rating_override, 
                     ratfac.notch_value, 
                     ratfac.notch_value_calculated, 
                     ratfac.notch_value_adjusted, 
                     ratfac.score, 
                     ratfac.score_calculated, 
                     ratfac.score_adjusted, 
                     ratfac.factor_comment 
              FROM   vw_ratingfactor ratfac ) pivot ( min(ratingmodel_factor_id) ratingmodel_factor_id, min(weight) weight, min(rating_calculated) rating_calculated, min(rating) rating,
       --MAX(RATING_ADJUSTED) as RATING_ADJ, 
       min(override_comment) override_comment, min(rating_override) rating_override, min(notch_value) notch_value,
       --MIN(NOTCH_VALUE_CALCULATED) NOTCH_VALUE_CALCULATED, 
       --MIN(NOTCH_VALUE_ADJUSTED) NOTCH_VALUE_ADJUSTED, 
       min(score) score, min(score_calculated) score_calculated, min(score_adjusted) score_adjusted, min(factor_comment) factor_comment FOR label_en IN ('Market'
                                                                                                                                                                || chr(38)
                                                                                                                                                                ||'Competitiveness'        AS marketcompetitiveness,
                                                                                                                                                         'Industry'                        AS industry,
                                                                                                                                                         'Company Strategy and Management' AS company_stratergy_mgmt,
                                                                                                                                                         'Financial Performance'           AS financial_performance, …
Run Code Online (Sandbox Code Playgroud)

oracle pivot oracle11g

0
推荐指数
1
解决办法
5021
查看次数

使用 LAG/LEAD 分析功能优化自联接 Oracle SQL 查询?

我们有一个 Oracle SQL 查询来识别表列的值已从一个记录更改为另一个记录的记录。相关列是 (ID, SOME_COLUMN, FROM_DATE, TO_DATE) 其中 ID 不是唯一的,并且 FROM_DATE 和 TO_DATE 确定该 ID 的特定行有效的时间间隔,即

(ID1, VAL1, 01/01/2016, 03/01/2016)
(ID1, VAL2, 04/01/2016, 09/01/2016)
(ID1, VAL3, 10/01/2016, 19/01/2016) 
Run Code Online (Sandbox Code Playgroud)

等等。

我们可以使用以下自连接来实现

SELECT N.ID
       O.SOME_COLUMN OLD_VALUE,
       N.SOME_COLUMN NEW_VALUE
FROM OUR_TABLE N, OUR_TABLE O
WHERE N.ID = O.ID
  AND N.FROM_DATE - 1 = O.TO_DATE
  AND N.SOME_COLUMN <> O.SOME_COLUMN
Run Code Online (Sandbox Code Playgroud)

但是,由于该表包含 1 亿条记录,因此对性能非常不利。有没有更有效的方法来做到这一点?有人暗示了分析函数(例如 LAG),但到目前为止我们无法找出可行的解决方案。任何想法,将不胜感激

sql oracle sqlperformance oracle11g

0
推荐指数
1
解决办法
4134
查看次数

无法卸载 Oracle 11g 数据库快捷版

由于一些错误,我正在尝试卸载 Oracle 11g 数据库并重新安装。我在 Windows 10 上并且正在从控制面板卸载。但是,我的卸载窗口接近尾声时关闭,现在当我返回控制面板时,它仍然显示“Oracle Database 11g Express Edition”条目,大小为 527 MB。

现在它不再让我卸载了,它给了我一个错误“1628:无法完成安装”。.

我曾尝试使用 Oracle 通用安装程序重新安装该软件,但这仅提供了修复和删除选项。单击“修复”或单击“删除”会出现“错误 1605:此操作仅对当前安装的产品有效”。

如何重新安装数据库?

database oracle uninstallation oracle11g

0
推荐指数
1
解决办法
3354
查看次数

如何在sqlplus中显示过程中使用的dbms_output.put_line的输出?

我试图使用SQLPLUS从我的plsql块执行该过程,遗憾的是,我无法在执行SQL脚本之后看到来自过程的"dbms_output.put_line"的输出,尽管输出在假脱机文件中可见,我想在执行完成后在屏幕上显示输出.

现在,虽然当我执行"SET SERVEROUTPUT ON"时,我得到提示但没有输出 在SQL开发人员中它显示输出,一旦执行完成,我该怎么做才能看到sqlplus中的输出.

在SQLPLUS中输出

在此输入图像描述

SQL Developer中的输出

在此输入图像描述

表结构和数据

create table cust_temp_temp
(name varchar2(20) , id varchar2(20));

insert into cust_temp_temp
select 'hasu t', '100' from dual
union all
select 'hasu r', '100' from dual
union all
select 'hasu e', '100' from dual
union all
select 'hasu  w', '100' from dual
union all
select 'hasu q', '100' from dual;
Run Code Online (Sandbox Code Playgroud)

包装结构:

CREATE OR REPLACE PACKAGE CUSTOM_PKG
AS
PROCEDURE get_transaction_details(
      id_ cust_temp_temp.id%TYPE);
END CUSTOM_PKG;
/
Run Code Online (Sandbox Code Playgroud)

包装体:

CREATE OR REPLACE PACKAGE BODY CUSTOM_PKG
AS …
Run Code Online (Sandbox Code Playgroud)

oracle plsql sqlplus oracle11g oracle-sqldeveloper

0
推荐指数
1
解决办法
4457
查看次数

将数百万条记录从一张表复制到另一张表

如何将一百万张记录从一个表复制到另一张表。如果在复制记录时发生任何错误,我需要将记录(错误记录)复制到其他表。

sql oracle plsql oracle11g plsqldeveloper

0
推荐指数
1
解决办法
72
查看次数

sql比oracle中的plsql快吗

使用批量收集或常规合并更新?

我试图通过使用批量收集和正常合并来检查更新的性能。我看到当我们在匿名块中使用简单合并时,性能会更好。使用批量收集时,需要花费更多时间。

如果正常更新(合并)比批量收集快,那么为什么Oracle引入了它?我们在哪里真正看到批量收集的好处?

declare 
l_start integer;
l_end integer;
begin
l_start := dbms_utility.get_time;
merge into test111 t1
using test112 t2
on (t1.col1 = t2.col3)
when matched then update 
set t1.col2 = t1.col2*5;
l_end := dbms_utility.get_time;
dbms_output.put_line(l_end - l_start);
end;
Run Code Online (Sandbox Code Playgroud)
declare
type nt_test is table of test112.col3%TYPE;
nt_val nt_test := nt_test();
cursor c is select col3 from test112;
c_limit integer := 100;
l_start integer;
l_end integer;
begin
l_start := DBMS_UTILITY.get_time;
open c;
loop

fetch c 
bulk collect into nt_val limit c_limit;
exit …
Run Code Online (Sandbox Code Playgroud)

sql plsql bulkinsert oracle11g query-performance

0
推荐指数
1
解决办法
85
查看次数