create or replace procedure pro_1 asv_sql varchar2(1000);beginv_sql := 'create table testtab ( coll int )';Execute immediate v_sql;Insert Into testtab Values(1);commit;end;而如下过程又可以创建表:testtab,这是为什么。create or replace procedure pro_1 asv_sql varchar2(1000);beginv_sql := 'create table testtab ( coll int )';Execute immediate v_sql;end;
2 回答
大话西游666
TA贡献1817条经验 获得超14个赞
你要弄清楚oracle执行存储过程的整个流程就明白了。
这个原因很清楚就是编译的时候oracle会发现你insert的表不存在,于是报错。
如果你想让他执行,就把insert也写成动态的,oracle就不会检验动态语句内部的语法、表是否存在等异常了。
- 2 回答
- 0 关注
- 243 浏览
添加回答
举报
0/150
提交
取消