Hum, mais beleza, coloquei um @echo off já some as senhas, o script se abrirem não tem nada de mais dentro, so não queria deixar a senha do banco de dados visivel.
Ricardo, sem querer se chato, mais tens como me ajudar na trigger abaixo?
Selecionar tudo
CREATE OR REPLACE TRIGGER VALIDA_INC_UPD_TGFITE
BEFORE INSERT OR UPDATE
ON SANKHYA.TGFITE
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
P_CODVOL TGFVOA.CODVOL%TYPE;
P_CODTIPOPER TGFCAB.CODTIPOPER%TYPE;
/* TRIGGER POR EMERSON PARA não DEIXAR lançar NOTA DE ENTRADA ERRADA, COM CODVOL ERRADO */
BEGIN
SELECT VOA.CODVOL,CAB.CODTIPOPER
INTO P_CODVOL, P_CODTIPOPER
FROM TGFVOA VOA, TGFCAB CAB
WHERE VOA.CODPROD = :NEW.CODPROD AND CAB.NUNOTA = :NEW.NUNOTA;
IF P_CODTIPOPER IN (80,81,82,89,90) THEN
IF :NEW.CODVOL <> P_CODVOL THEN
RAISE_APPLICATION_ERROR(-20101, 'CODIGO DO VOLUME DIFERENTE DA UNIDADE DE COMPRA, VER UNIDADE DE COMPRA DO ITEM');
END IF;
END IF;
END;
/
Ela funcionou Perfeito no que eu queria,quando um usuario for lançar uma nota com os codigos de operação 80,81,82,89,90 ele tem que usar o volume certo, não deixa ele lançar errado.
O problema é que como o select acima liga as tabelas TGFVOA, TGFCAB, TGFITE da problema em outras notas que por exemplo não tenha o item na TGFVOA, operações que não exigem que o produto tem CODVOL.
Outro exemplo e a nota de credito de importo de energia eletrica, usa um coddigo de operação bem diferente dos acima, mais não tem itens dentro da nota, e ai não deixa lançar da erro "END OF TABLE" pois não acha a ligação com a TGFVOA, se eu colocar o select para depois do IF não funciona nada dai.
Muito Grato pelas dicas do SQLPLUS, se souber da trigger abradeço, Abraço.