程序中的“ORA-01001无效游标”(PL / SQL包)

时间:2016-10-21 09:52:23

标签: sql oracle plsql

我正在开发一个PL / SQL包,刚刚完成了一般框架,以便我可以进行第一次测试。

但是,我的程序中出现了一个奇怪的sm_20错误,我似乎无法弄明白。

任何关于我的游标可能无效的想法?两个游标的SELECT语句都返回值,我使用双引号转义ORA-01001 invalid cursor"KEY",以避免遇到保留字的问题......

这是我的包裹体代码,感谢提前提示:

"VALUE"

1 个答案:

答案 0 :(得分:3)

编辑:我发现你的包中有些错误

1)您尝试更新

        sql_query := 'UPDATE MY_TABLE_3 SET :1 = :2;';

并与例如'col1'和'val2'绑定后;它看起来像

UPDATE MY_TABLE_3 SET 'col1' = 'val2';

但是当你在execute immediate语句中使用绑定变量时,你只发送文字。你不能用另一个字符串更新一个字符串。 如果要编写正确的更新,则应添加SQL注入;

        sql_query := 'UPDATE MY_TABLE_3 SET '||vc_my_variable1 ||' = :2;';
  ... 
  EXECUTE IMMEDIATE sql_query USING vc_my_variable2;

2)下一个(完成

移动EXIT WHEN c_cursor1%NOTFOUND;

FETCH c_cursor1 INTO vc_my_variable1, vc_my_variable2;

之后

3)错误ORA-01001无效游标。如果您的MAXOPENCURSORS太小或者必须使用OLON或OLOGON定义登录数据区(LDA),则可能会出现。如果未定义LDA,则会针对以下调用发出此消息:OPEN,COM,CON,ROL和LOGOFF。 http://www.dba-oracle.com/t_ora_01001_invalid_cursor.htm