Как выдать ошибку, когда на триггере нет данных - PullRequest
0 голосов
/ 14 мая 2018

Я хочу выдать ошибку, когда в триггере нет данных, поэтому я использовал следующий триггер. Он работал, когда данные не были найдены в первый раз, после этого, когда данные присутствуют, они не работают и никаких результатов не происходит. этот выпуск

    create or replace 
    trigger testtrigger
    after INSERT OR UPDATE 
    on T1
    FOR EACH ROW 
    BEGIN
     SELECT t_power
        INTO t_power_trg
        FROM t3
        WHERE UPPER(t3.NAME) LIKE ('%' || UPPER(:NEW.INFO) || '%'); 
        EXCEPTION
      WHEN NO_DATA_FOUND THEN
      RAISE_APPLICATION_ERROR(-20001,'-------------Selected  model is  not present (info(2))-------------');
  SELECT refer_power
        INTO refer_power_trg
        FROM t3
        WHERE UPPER(t3.NAME) LIKE ('%' || UPPER(:NEW.TAR2) || '%'); 
        EXCEPTION
      WHEN NO_DATA_FOUND THEN
      RAISE_APPLICATION_ERROR(-20001,'-------------Selected  reference is  not present (info(2))-------------');

      UPDATE t_master
      SET 
       Master_pwr=t_power_trg where firstname='Z'
    END IF;
    END

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

В вашем коде есть проблема с SYNTAX, проверьте код ниже. Надеюсь, это будет иметь смысл для вашего требования.

    CREATE OR REPLACE TRIGGER testtrigger
    AFTER INSERT OR UPDATE ON T1
    FOR EACH ROW 
    DECLARE 
      t_power_trg T3.T_POWER%TYPE;
    BEGIN
    SELECT t_power
      INTO t_power_trg
      FROM t3
     WHERE UPPER(t3.NAME) LIKE ('%' || UPPER(:NEW.INFO) || '%');

    UPDATE t_master
       SET Master_pwr=t_power_trg
     where firstname='Z';

    EXCEPTION
      WHEN NO_DATA_FOUND THEN
         RAISE_APPLICATION_ERROR(-20001,'-------------Selected  model is  not present (info(2))-------------');
    END;
0 голосов
/ 14 мая 2018

Это функция, вы можете добавить шаг непосредственно перед вашим циклом, чтобы записать количество случаев, которые вы хотите видеть

, например:

if ((select count(*)
       FROM t3
      WHERE UPPER(t3.NAME) LIKE ('%' || UPPER(:NEW.INFO) || '%')) < 1
    ) then
SET @error = '-------------Selected  model is  not present (info(2))-------------';
end if;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...