sql> declare 2 i int; 3 begin 4 i := dbms_sql.open_cursor; 5 dbms_sql.parse(i,'begin dontexist; dbms_output.put(''a''); end;',1); 6 dbms_sql.close_cursor(i); 7 end; 8 /declare*FOUT in regel 1:.ORA-06550: Regel 1,kolom 7:PLS-00201: IDentifIEr 'DONTEXIST' must be declared.ORA-06550: Regel 1,kolom 7:PL/sql: Statement ignored.ORA-06512: in "SYS.DBMS_sql",regel 1120ORA-06512: in regel 5
因为我没有名为DONTEXIST的程序.我的问题是为什么下一个PL / sql块成功完成?
sql> declare 2 i int; 3 begin 4 i := dbms_sql.open_cursor; 5 dbms_sql.parse(i,'begin dontexist; dbms_output.put(:a); end;',1); 6 dbms_sql.close_cursor(i); 7 end; 8 /PL/sql-procedure is geslaagd.
区别在于使用bind变量而不是常量,但我想知道为什么这会产生影响.
这是Oracle 12.1.0.2
解决方法 看起来解析只是具有绑定的匿名块的语法,并且完整的语义检查被推迟到执行.不过,这不是我们想要的行为所以BUG 26669757提出来了.
总结以上是内存溢出为你收集整理的oracle – 为什么dbms_sql.parse包含带有绑定变量的错误PL / SQL块意外成功?全部内容,希望文章能够帮你解决oracle – 为什么dbms_sql.parse包含带有绑定变量的错误PL / SQL块意外成功?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)