oracle 如下过程中,报错:错误:PL/SQL: ORA-00942: 表或视图不存在

create or replace procedure pro_1 
as
v_sql varchar2(1000);
begin
v_sql := 'create table testtab ( coll int )';
Execute immediate v_sql;
Insert Into testtab Values(1);
commit;
end;

而如下过程又可以创建表:testtab,这是为什么。
create or replace procedure pro_1 
as
v_sql varchar2(1000);
begin
v_sql := 'create table testtab ( coll int )';
Execute immediate v_sql;
end;

慕斯709654
浏览 166回答 2
2回答

大话西游666

你要弄清楚oracle执行存储过程的整个流程就明白了。这个原因很清楚就是编译的时候oracle会发现你insert的表不存在,于是报错。如果你想让他执行,就把insert也写成动态的,oracle就不会检验动态语句内部的语法、表是否存在等异常了。

ibeautiful

可能是要将你操作的用户解锁,语句是:alter user 用户名 account unlock;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Oracle