#oracle #oracle12c
Вопрос:
Я хочу выполнить ошибку ПОВЫШЕНИЯ на основе инструкции SELECT. Я уверен, что это сработает или нет. Если возможно, может ли кто-нибудь помочь с приведенным ниже кодом
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 ;
Ответ №1:
Это сработает, но не так, как вы хотели (я думаю). Вам придется динамически выполнять весь блок PL/SQL, содержащий объявление исключения и раздел его обработки. Что-то вроде этого:
SQLgt; 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. SQLgt;