【发布时间】:2014-11-23 17:17:07
【问题描述】:
所以我最近一直在用 sql 编程,但我还是个新手,不知道很多语言规则,当编译器没有多大帮助时,我真的不知道是什么去做。
在这种情况下,我遇到了三个错误:
Error(5,12): PLS-00103: Encountered the symbol "SELECT" when expecting one of the following: (...)
Error(5,125): PLS-00103: Encountered the symbol ")" when expecting one of the following: * (...)
Error(22,20): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: end not pragma final instantiable order overriding static member constructor map
这是代码,如果 CONTRATO.DATA_CONTRATO 上的日期差和今天的 DATE(更具体地说是月份差)小于 8 并且如果它们在 FTURA 中有任何寄存器,其中 ESTADO 是 'Nao,则插入到 MENSALIDADE 表中的触发器pago'(对不起葡萄牙语,但它是'未付费'):
create or replace TRIGGER ANULAR_CONTRATO BEFORE DELETE ON CONTRATO
FOR EACH ROW
DECLARE
valor NUMBER;
juro NUMBER;
BEGIN
juro := (SELECT COUNT(N_FATURA) FROM FATURA WHERE (EXTRACT(month FROM FATURA.DATA_FATURA) = (EXTRACT(month FROM SYSDATE))));
valor := (50 + juro);
IF DELETING THEN
IF ((MONTHS_BETWEEN(:OLD.DATA_CONTRATO, SYSDATE)) <= 8) THEN
IF EXISTS (SELECT (FATURA.CODIGO_CLIENTE) FROM FATURA, CONTRATO WHERE (FATURA.CODIGO_CLIENTE = CONTRATO.CODIGO_CLIENTE)) THEN
IF EXISTS (SELECT (FATURA.CODIGO_CLIENTE) FROM FATURA, CONTRATO WHERE ((FATURA.CODIGO_CLIENTE = CONTRATO.CODIGO_CLIENTE) AND (FATURA_ESTADO = 'Nao Pago'))) THEN
INSERT INTO MENSALIDADE (N_MENSALIDADE, CODIGO_CLIENTE, N_CONTRATO, VALOR, DATA_FIM) VALUES (SEQ_MENSALIDADE.NEXTVAL, CONTRATO.CODIGO_CLIENTE, CONTRATO.N_CONTRATO, valor ,CONTRATO.DATA_FIM_CONTRATO);
END IF;
END IF;
ELSE
IF EXISTS (SELECT (FATURA.CODIGO_CLIENTE) FROM FATURA, CONTRATO WHERE (FATURA.CODIGO_CLIENTE = CONTRATO.CODIGO_CLIENTE)) THEN
IF EXISTS (SELECT (FATURA.ESTADO) FROM FATURA, CONTRATO WHERE (FATURA.CODIGO_CLIENTE = CONTRATO.CODIGO_CLIENTE) AND (FATURA_ESTADO = 'Nao Pago')) THEN
INSERT INTO MENSALIDADE (N_MENSALIDADE, CODIGO_CLIENTE, N_CONTRATO, VALOR, DATA_FIM) VALUES (SEQ_MENSALIDADE.NEXTVAL, CONTRATO.CODIGO_CLIENTE, CONTRATO.N_CONTRATO, valor ,CONTRATO.DATA_FIM_CONTRATO);
END IF;
END IF;
END IF;
END IF;
END ANULAR_CONTRATO;
第一个错误可能我无法做我正在做的事情,但对于如何正确完成它的一些帮助将不胜感激。 第三个我不知道为什么会发生。谢谢!
【问题讨论】: