单独执行语句块
‘begin execute immediate 'create table t2 as select sysdate dd from dual';end;’
没问题.
...............而create or replace procedure ct as
begin
execute immediate 'create table t2 as select sysdate dd from dual';
end;在存储过程中有execute immediate的建表语句,
为什么执行该 procedure会报错???
是权限问题吗?
在存储过程中执行‘execute immediate’要注意什么?
‘begin execute immediate 'create table t2 as select sysdate dd from dual';end;’
没问题.
...............而create or replace procedure ct as
begin
execute immediate 'create table t2 as select sysdate dd from dual';
end;在存储过程中有execute immediate的建表语句,
为什么执行该 procedure会报错???
是权限问题吗?
在存储过程中执行‘execute immediate’要注意什么?
is
begin
c := a||b;
end p1_test;
declare
v_sql varchar2(1000);
c varchar2(1000);
begin
v_sql:='begin p1_test(:v1,:v2,:v3); end;';
execute immediate v_sql using in '1',in '2',out c;
dbms_output.put_line(c);
end;
SQL>
SQL> create or replace procedure ct as
2 begin
3 execute immediate 'create table t2 as select sysdate dd from dual';
4 end;
5 /Procedure createdSQL>
grant create any procedure to uname
看看什么错误
该不会是要建表已经存在了吧
要不应该是权限问题。create procedure权限
谢谢楼上的朋友,我刚查到应该在过程名后加 authid current_user,即
create or replace procedure ct authid current_user,就解决问题了。
我说的意思是调用该过程时报错了。