Как я могу найти ошибку в следующем SQL запросе? - PullRequest
0 голосов
/ 02 апреля 2020

Я получаю следующую ошибку в строке 5:

Error at line 5: PL/SQL: SQL Statement ignored

Код:

CREATE OR REPLACE TRIGGER  trg_videorental_up  
AFTER UPDATE OF DETAIL_RETURNDATE ON DETAILRENTAL 
FOR EACH ROW 
BEGIN 
      IF :NEW.DETAIL_RETURNDATE IS NULL THEN UPDATE VIDEO SET VID_STATUS =       'OUT' WHERE    VIDEO.VID_NUM = :NEW.VID_NUM; 
      ELSIF :NEW.DETAIL_RETURNDATE > SYSDATE  THEN UPDATE VIDEO SET VID_STATUS = 'OUT' WHERE VIDEO.VID_NUM = :NEW.VID_NUM; 
      ELSIF:NEW.DETAIL_RETURNDATE ='01/01/01' THEN UPDATE VIDEO SET VID_STATUS= 'LOST' WHERE VIDEO.VID_NUM = :NEW.VID_NUM;
      ELSIF :NEW.DETAIL_RETURNDATE <= SYSDATE THEN UPDATE VIDEO SET VID_STATUS = 'IN'  WHERE VIDEO.VID_NUM=  :NEW.VID_NUM;
      END IF;
END; 

1 Ответ

1 голос
/ 02 апреля 2020

Как насчет перехода на одно обновление со случаем / когда для значения ... если ни одно из ваших других значений, просто установите для него исходное значение vid_status. Проще читать тоже (ИМО)

UPDATE VIDEO SET VID_STATUS = 
          case when :NEW.DETAIL_RETURNDATE IS NULL 
                 OR :NEW.DETAIL_RETURNDATE > SYSDATE THEN 'OUT' 
               when :NEW.DETAIL_RETURNDATE ='01/01/01' THEN 'LOST' 
               when :NEW.DETAIL_RETURNDATE <= SYSDATE THEN 'IN'  
               else VID_STATUS end
   WHERE VIDEO.VID_NUM = :NEW.VID_NUM; 

Поставить обратно в ":", видимо я ошибся при его удалении. Я не настолько знаком с Oracle для триггеров / процедур.

...