使用動態sql:
sql:='...';
execute immediate sql;

解决方案 »

  1.   

    CREATE OR REPLACE  PROCEDURE EXECUTE_SQL(SQL_TEXT  IN VARCHAR2) AS
    BEGIN
     EXECUTE immediate SQL_TEXT;
    END;
    /
      

  2.   

    CREATE OR REPLACE  PROCEDURE EXECUTE_SQL(SQL_TEXT  IN VARCHAR2,ERROR_TEXT OUT VARCHAR2) AS
    BEGIN
     EXECUTE immediate SQL_TEXT;
    END;
    /如果我执行的sql_text编译出错,怎样返回错误信息
      

  3.   

    CREATE OR REPLACE  PROCEDURE EXECUTE_SQL(SQL_TEXT  IN VARCHAR2,ERROR_TEXT OUT VARCHAR2) AS
    BEGIN
     EXECUTE immediate SQL_TEXT;
    exception
    when others then
    dbms_output.put_line('出错');
    END;
    /
      

  4.   

    to:beckhambobo(beckham)
    怎样捕获错误信息并通过 ERROR_TEXT 返回,有时即使完全执行了sql_text,但也可能有错,比如创建触发器,即使有错,也可能创建成功,只是出现 "警告: 创建的触发器带有编译错误。" 提示,我想做就是捕获这些提示通过 ERROR_TXT 返回
      

  5.   

    SQL> set serveroutput on
    SQL> declare
      2    a number;
      3  begin
      4    a:='adc';
      5    exception
      6    when others then
      7    dbms_output.put_line('出错号:'||sqlcode||' '||'出错信息:'||sqlerrm);
      8  end;
      9  /
    出错号:-6502 出错信息:ORA-06502: PL/SQL: 数字或值错误 :  字符到数值的转换错误PL/SQL procedure successfully completed