oracle execute immediate,executeimmediate
declare aa number(15,2); l_cnt varchar2(200); i_yr int :=11; i_curCode varchar2(100) :='001'; i_vDate date := sysdate; i_valExpr varchar2(100) := 'haha'; i_branchNo varchar2(100) := '00'; begin l_cnt := 'Ns_Gls_AutoVal(132,:1,:2,:3,:4)'; execute immediate 'select ' || l_cnt || ' from dual' into aa using i_curCode,i_vDate,i_valExpr,i_branchNo; dbms_output.put_line(aa); end;简单来说 就是你一个存储过程当中 创建了一个表 table_a 然后要用insert into将其他的数据插入到这个table_a当中,但是因为你在创建过程的时候 table_a还不存在,过程就会显示有编译错误,因为table_a不存在必然导致过程无法执行,所以无法编译成功,而把insert into语句加如到 execute immediate之后 则oracle不会再去理会这个对象是否存在,因此可以成功编译和执行。
EXECUTE IMMEDIATE 一般用于 执行动态 SQL
例如:
SQL> BEGIN
2 EXECUTE IMMEDIATE ( 'SELECT * FROM test_dysql WHERE id=1' );
3 END;
4 /
PL/SQL procedure successfully completed.
参考资料:hi.baidu.com/...1.html
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。