Oracle11g 列存在,但仍收到此错误ORA-00904:标识符无效
任何人都可以帮我解决这个问题Oracle11g 列存在,但仍收到此错误ORA-00904:标识符无效,oracle11g,ora-00904,Oracle11g,Ora 00904,任何人都可以帮我解决这个问题 declare lv2_sql VARCHAR2(32767); cursor c_scv is select financial_code, object_id, daytime from stream_category_version; begin for r_scv in c_scv LOOP IF r_scv.financial_code = 'PURCHASE' THEN lv2_sql := 'UPDATE
declare
lv2_sql VARCHAR2(32767);
cursor c_scv is
select financial_code, object_id, daytime from stream_category_version;
begin
for r_scv in c_scv LOOP
IF r_scv.financial_code = 'PURCHASE' THEN
lv2_sql := 'UPDATE stream_category_version ' || CHR(10) ||
'set REVN_PURCHASES_IND = ''Y'', last_updated_by = nvl(last_updated_by, created_by) ' || CHR(10) ||
'WHERE object_id = r_scv.object_id AND daytime = r_scv.daytime';
ecdp_dynsql.execute_statement(lv2_sql);
ELSIF r_scv.financial_code = 'SALE' THEN
lv2_sql := 'UPDATE stream_category_version ' || CHR(10) ||
'set REVN_SALES_IND = ''Y'', last_updated_by = nvl(last_updated_by, created_by) ' || CHR(10) ||
'WHERE object_id = r_scv.object_id AND daytime = r_scv.daytime';
ecdp_dynsql.execute_statement(lv2_sql);
END IF;
END LOOP;
end;
我有如上所示的代码,但我得到的错误是“ORA-00904:R_SCV.days:invalid identifier”。我已经检查了“stream\u category\u version”的表定义,并找到了如下所示的Daylay列
SQL> desc stream_category_version
Name Type Nullable Default Comments
------------------ -------------- -------- ------- --------
OBJECT_ID VARCHAR2(32)
DAYTIME DATE
END_DATE DATE Y
NAME VARCHAR2(240) Y
FINANCIAL_CODE VARCHAR2(32) Y
SORT_ORDER NUMBER Y
COMMENTS VARCHAR2(2000) Y
然后我对这个错误感到困惑。有人能帮我吗
提前谢谢 简而言之,Oracle区分大小写 。。。可能在创建表的过程中,列被键入大写引号,如下所示:
"DAYTIME"
= r_scv.DAYTIME
在您的sql中,我看到这个列是小写的
所以,您应该验证列名,最好将其更改为不带引号的版本
另一个选项是这样调用此列:
"DAYTIME"
= r_scv.DAYTIME