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;而如下過程又可以創(chuàng)建表: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貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
你要弄清楚oracle執(zhí)行存儲(chǔ)過程的整個(gè)流程就明白了。
這個(gè)原因很清楚就是編譯的時(shí)候oracle會(huì)發(fā)現(xiàn)你insert的表不存在,于是報(bào)錯(cuò)。
如果你想讓他執(zhí)行,就把insert也寫成動(dòng)態(tài)的,oracle就不會(huì)檢驗(yàn)動(dòng)態(tài)語句內(nèi)部的語法、表是否存在等異常了。
- 2 回答
- 0 關(guān)注
- 440 瀏覽
添加回答
舉報(bào)
0/150
提交
取消