Sql 我在thast之后创建了一个过程和类型,我只是修改了过程游标和类型中的一列
我在编译后创建了一个过程和类型我刚刚修改了过程游标和类型中的一列,但在尝试编译过程时,它返回了一个错误: 错误(94,65):PLS-00302:必须声明组件“请求” 代码: 当我试图更新类型中的文件名时,即使在修改过程之后,程序编译器也会出错。 请发布一个解决方案 “错误”:-类似于“错误(94,65):PLS-00302:必须声明组件'REQUESTID'”Sql 我在thast之后创建了一个过程和类型,我只是修改了过程游标和类型中的一列,sql,oracle,plsql,Sql,Oracle,Plsql,我在编译后创建了一个过程和类型我刚刚修改了过程游标和类型中的一列,但在尝试编译过程时,它返回了一个错误: 错误(94,65):PLS-00302:必须声明组件“请求” 代码: 当我试图更新类型中的文件名时,即使在修改过程之后,程序编译器也会出错。 请发布一个解决方案 “错误”:-类似于“错误(94,65):PLS-00302:必须声明组件'REQUESTID'” 这是甲骨文的行为 您已经将游标中的“requestId”定义为区分大小写,并且只需要以区分大小写的方式使用它 因此需要对代码进行以下更
这是甲骨文的行为 您已经将游标中的“requestId”定义为区分大小写,并且只需要以区分大小写的方式使用它 因此需要对代码进行以下更改:(其他变量相同) 或者只改变光标,而不改变整个代码
CURSOR cur_security_data IS
SELECT
"ID" requestId, -- removed " (double qoutes) from all the alias
"ROOM" room,
"FIRST_NAME" FIRST_NAME,
"LAST_NAME" LAST_NAME
FROM
"BI_REQUEST_CATERING_ACTIVITY" ;
实际上,当您使用“
包装别名时,Oracle会将其区分大小写。
所以在您的情况下,“requestId”必须被称为区分大小写的方式
您在作业右侧引用它时没有使用双引号
。因此实际上oracle将其视为LREC.REQUESTID:=L_CUR\u SECURITY_DATA(I).REQUESTID;
,但不知道名为REQUESTID
的变量
这纯粹是区分大小写/不区分大小写的变量名的错误
对于甲骨文来说,
num1
和分别是num1
和num1
,两者都不同
干杯!!非常感谢…!这对我很有效。我只想问一个问题,如果select查询在游标中返回0条记录,我会遇到一个错误,比如引用未初始化的游标,如何处理该异常当select查询返回“0”时如何处理游标异常“记录应该是另一个问题,并作为新问题提出,以避免在单个线程中出现混乱。请尝试回答这个问题,尝试优化代码,因为我可以看到不必要的循环完成。您可以直接从查询中获取OUT
参数。
lrec.requestId := l_cur_security_data(i)."requestId" ; -- use it with " (double qoutes)
CURSOR cur_security_data IS
SELECT
"ID" requestId, -- removed " (double qoutes) from all the alias
"ROOM" room,
"FIRST_NAME" FIRST_NAME,
"LAST_NAME" LAST_NAME
FROM
"BI_REQUEST_CATERING_ACTIVITY" ;