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 關注
- 405 瀏覽
添加回答
舉報
0/150
提交
取消