EXECUTE IMMEDIATE 存储过程中 权限不足及EXECUTE IMMEDIATE的调试避坑

来源:这里教程网 时间:2026-03-03 14:14:10 作者:

例子:

DECLARE
  i_tblname VARCHAR2(100);
  v_sql1 VARCHAR2(4000);
BEGIN
dbms_output.enable(9999999999);
v_sql1 :=
'insert into '||i_tblname||
             ' select * from emploees where field = ''xx'';'
EXECUTE IMMEDIATE v_sql1;
dbms_output.put_line(v_sql1);
END;
/

--  EXECUTE IMMEDIATE的调试 如果执行报错,解决思路可以将 v_sql1打印出来看下,是否符合执行标准。 负责的拼接语句很容易拼接出错,要及时调整。 输出sql查看时如果数据量太大可能会导致报错 ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes 在begin下加入 dbms_output.enable(9999999999); 设置 dbms_output输出的缓冲,默认是2000bytes! -- EXECUTE IMMEDIATE 在存储过程中 权限不足的修改方法  afterupdate:当前执行用户 grant      CREATE SESSION,     CREATE ANY TABLE,     CREATE ANY VIEW ,     CREATE ANY INDEX,     CREATE ANY PROCEDURE,     ALTER ANY TABLE,     ALTER ANY PROCEDURE,    DROP ANY TABLE,     DROP ANY VIEW,     DROP ANY INDEX,     DROP ANY PROCEDURE,  SELECT ANY TABLE,     INSERT ANY TABLE,     UPDATE ANY TABLE,     DELETE ANY TABLE to afterupdate;

相关推荐

热文推荐