我想基于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>