Error Oracle

1 resposta
R

Boa a noite a todos.
Alguém consegue me dizer o que está errado no trigger abaixo:

DECLARE
V_WOWO_REPORT_DATE T_WORK_ORDER.WOWO_REPORT_DATE%TYPE;

BEGIN
SELECT WOWO_REPORT_DATE INTO V_WOWO_REPORT_DATE
FROM T_WORK_ORDER
WHERE WOWO_CODE = NEW.WOEF_WORK_ORDER;

IF (NEW.WOEF_START_DATE < V_WOWO_REPORT_DATE) THEN
 RAISE_APPLICATION_ERROR(-20505, 'Data inicial menor que data da criação da OS.');

END IF;

END;

Quando vou compilar isto no Oracle aparece as seguintes mensagens de erro:

Núm. Linha # = 5 Núm. Coluna # = 6 Texto do Erro = PL/SQL: SQL Statement ignored
Núm. Linha # = 7 Núm. Coluna # = 24 Texto do Erro = PL/SQL: ORA-00904: nome inválido de coluna
Núm. Linha # = 9 Núm. Coluna # = 10 Texto do Erro = PLS-00201: o identificador ‘NEW.WOEF_START_DATE’ deve ser declarado
Núm. Linha # = 9 Núm. Coluna # = 6 Texto do Erro = PL/SQL: Statement ignored

1 Resposta

C

Boa noite, uma coisa que percebi foi:

...
WHERE WOWO_CODE = NEW.WOEF_WORK_ORDER; 

IF (NEW.WOEF_START_DATE < V_WOWO_REPORT_DATE) THEN 
..

Cara pelo que eu me lembre deveria ser utilizado assim

WHERE WOWO_CODE = :NEW.WOEF_WORK_ORDER; 

IF (:NEW.WOEF_START_DATE < V_WOWO_REPORT_DATE) THEN

Exemplo que pode te ajudar :smiley:

CREATE OR REPLACE TRIGGER ver_sal
       BEFORE INSERT OR UPDATE OF sal, job
       ON empl
       FOR EACH ROW
       WHEN (NEW.job_id <> 'PRESIDENT')
DECLARE
       v_minsal emp.sal%TYPE;
       v_maxsal emp.sal%TYPE;
BEGIN
       SELECT MIN(sal), MAX(sal)
         INTO v_minsal, v_maxsal
         FROM emp
        WHERE job = :NEW.job;
       IF :NEW.sal < v_min OR
          :NEW.sal > v_maxsal THEN
          RAISE_APPLICATION_ERROR(-20515,'Salario inválido');
       END IF;
END;

Um abraco… qlq coisa posta denovo ai

Criado 23 de julho de 2008
Ultima resposta 23 de jul. de 2008
Respostas 1
Participantes 2