动态执行RAISE错误时出现错误



我想基于SELECT语句执行RAISE错误。我肯定这能不能成功。如果可能的话,有人可以帮助处理下面的代码

DECLARE
A ExcEPTION;
V_T VARCHAR2(1000);
BEGIN
SELECT ' RAISE A ' INTO V_T FROM DUAL;
EXECUTE  IMMEDIATE V_T;
EXCEPTION
WHEN A THEN
DBMS_OUTPUT.PUT_LINE('ABC');
END ;

它会工作,但不是你想要的(我猜)。您必须动态执行包含异常声明及其处理部分的整个PL/SQL块。像这样:

SQL> declare
2    v_t varchar2(1000);
3  begin
4    select ' RAISE A ' into v_t from dual;
5    execute  immediate
6      'declare a exception; begin ' || v_t ||
7      '; exception when a then dbms_output.put_line(''abc''); end;';
8  end ;
9  /
abc
PL/SQL procedure successfully completed.
SQL>

相关内容

最新更新