我已经被这个错误困住了一段时间,你能帮我解决这个问题吗? 这是我试图运行的代码:
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:语句被忽略。谢谢你的帮助!
答案 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)