Oracle语句忽略错误

时间:2014-08-27 10:39:29

标签: sql oracle

我已经被这个错误困住了一段时间,你能帮我解决这个问题吗? 这是我试图运行的代码:

CREATE OR REPLACE TRIGGER set_gal_trig 
      BEFORE INSERT ON MEDIA_CONTENUTI 
      FOR EACH ROW
DECLARE
       tipo_coll VARCHAR2(15);
       user2 VARCHAR2(30);
       user1 VARCHAR2(30);
BEGIN
     SELECT C.Tipo INTO tipo_coll FROM Collezione C WHERE :new.Cod_Collezione =     C.Cod_Collezione;
     SELECT C.Nome_Utente INTO user1 FROM Collezione C WHERE :new.Cod_Collezione = C.Cod_Collezione;
     SELECT M.Nome_Utente INTO user2 FROM Media M WHERE :new.Cod_Media = M.Cod_Media;
     IF (tipo = 'SET' AND user1 <> user2)
        THEN
        Raise_application_error(-20075, 'Inserimento non valido, un SET puo contenere solo media appartenenti al proprietario');
     ELSIF (tipo = 'GALLERIA' AND user1= user2)
        THEN
        Raise_application_error(-20076, 'Inserimento non valido, una GALLERIA puo contenere solo media non appartenenti al proprietario');
     END IF;
END;

错误是:第9行出错:PL / SQL:语句被忽略。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

没有完整的错误堆栈,显而易见的错误在第9行,因为顶级错误消息显示(其中行号仅在语句的PL / SQL部分内计算,而不是前三个非PL / SQL行):

 IF (tipo = 'SET' AND user1 <> user2)

您没有名为tipo的变量,因此应该是:

 IF (tipo_coll = 'SET' AND user1 <> user2)
  ...
 ELSIF (tipo_coll = 'GALLERIA' AND user1= user2)