Trigger para calcular...2
Oi Gente...
Olha só... tentando resolver aquele problema da trigger..
eu criei essa função:
[b:7f5d28b9cc]SET TERM !!;
CREATE PROCEDURE VALORITEM(P_PEDIDO INTEGER,P_ITEM INTEGER) RETURNS
(VALOR FLOAT) AS
BEGIN
FOR SELECT (A.QUANT_ITEM * B.VALOR)
FROM ITENS_PEDIDO A, BATERIAS B,
WHERE A.COD_PEDIDO = :P_PEDIDO
AND COD_ITENS_PEDIDO = :P_ITEM
AND A.COD_BATERIA = B.COD_BATERIA INTO :VALOR DO SUSPEND;
END!!
SET TERM;!![/b:7f5d28b9cc]
e depois quero chamar ela na minha trigger, mas o interbase nao reconhece a função!!!!
[color=green:7f5d28b9cc]A msg de erro é:
SQL error code = -804
Function unknown
VALORITEM[/color:7f5d28b9cc]
[color=red:7f5d28b9cc][b:7f5d28b9cc]ABAIXO SEGUE A TRIGGER:[/b:7f5d28b9cc][/color:7f5d28b9cc]
[b:7f5d28b9cc]SET TERM ^;
CREATE TRIGGER CALCULA_VALOR_PEDIDO_INSERIR FOR ITENS_PEDIDO
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE TOT INTEGER;
BEGIN
FOR SELECT VALORITEM(NEW.COD_PEDIDO,NEW.COD_ITENS_PEDIDO)
FROM pedido COD_PEDIDO = NEW.COD_PEDIDO INTO :TOT DO
UPDATE PEDIDO SET TOTAL_PED = TOTAL_PED + TOT
WHERE COD_PEDIDO= NEW.COD_PEDIDO;
END^
SET TERM ;^[/b:7f5d28b9cc]
Olha só... tentando resolver aquele problema da trigger..
eu criei essa função:
[b:7f5d28b9cc]SET TERM !!;
CREATE PROCEDURE VALORITEM(P_PEDIDO INTEGER,P_ITEM INTEGER) RETURNS
(VALOR FLOAT) AS
BEGIN
FOR SELECT (A.QUANT_ITEM * B.VALOR)
FROM ITENS_PEDIDO A, BATERIAS B,
WHERE A.COD_PEDIDO = :P_PEDIDO
AND COD_ITENS_PEDIDO = :P_ITEM
AND A.COD_BATERIA = B.COD_BATERIA INTO :VALOR DO SUSPEND;
END!!
SET TERM;!![/b:7f5d28b9cc]
e depois quero chamar ela na minha trigger, mas o interbase nao reconhece a função!!!!
[color=green:7f5d28b9cc]A msg de erro é:
SQL error code = -804
Function unknown
VALORITEM[/color:7f5d28b9cc]
[color=red:7f5d28b9cc][b:7f5d28b9cc]ABAIXO SEGUE A TRIGGER:[/b:7f5d28b9cc][/color:7f5d28b9cc]
[b:7f5d28b9cc]SET TERM ^;
CREATE TRIGGER CALCULA_VALOR_PEDIDO_INSERIR FOR ITENS_PEDIDO
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE TOT INTEGER;
BEGIN
FOR SELECT VALORITEM(NEW.COD_PEDIDO,NEW.COD_ITENS_PEDIDO)
FROM pedido COD_PEDIDO = NEW.COD_PEDIDO INTO :TOT DO
UPDATE PEDIDO SET TOTAL_PED = TOTAL_PED + TOT
WHERE COD_PEDIDO= NEW.COD_PEDIDO;
END^
SET TERM ;^[/b:7f5d28b9cc]
Michelli88
Curtidas 0
Respostas
Michelli88
22/11/2003
DESCULPE... MANDEI A TRIGGER COM ERRO... A QUE ME REFIRO EH ESTA:
[b:1a0a418b5d][color=olive:1a0a418b5d]SET TERM ^;
CREATE TRIGGER CALCULA_VALOR_PEDIDO_INSERIR FOR ITENS_PEDIDO
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE TOT INTEGER;
BEGIN
FOR SELECT VALORITEM(NEW.COD_PEDIDO,NEW.COD_ITENS_PEDIDO)
FROM PEDIDO WHERE COD_PEDIDO = NEW.COD_PEDIDO INTO :TOT DO
UPDATE PEDIDO SET TOTAL_PED = TOTAL_PED + TOT
WHERE COD_PEDIDO= NEW.COD_PEDIDO;
END^
SET TERM ;^[/color:1a0a418b5d][/b:1a0a418b5d]
[b:1a0a418b5d][color=olive:1a0a418b5d]SET TERM ^;
CREATE TRIGGER CALCULA_VALOR_PEDIDO_INSERIR FOR ITENS_PEDIDO
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE TOT INTEGER;
BEGIN
FOR SELECT VALORITEM(NEW.COD_PEDIDO,NEW.COD_ITENS_PEDIDO)
FROM PEDIDO WHERE COD_PEDIDO = NEW.COD_PEDIDO INTO :TOT DO
UPDATE PEDIDO SET TOTAL_PED = TOTAL_PED + TOT
WHERE COD_PEDIDO= NEW.COD_PEDIDO;
END^
SET TERM ;^[/color:1a0a418b5d][/b:1a0a418b5d]
GOSTEI 0
Afarias
22/11/2003
vc realmente não pode usar o Stored Proc como uma ´funcão´ ... vc irá usá-lo como uma ´tabela´ ::
{...}
FOR SELECT VALOR FROM VALORITEM (NEW.COD_PEDIDO, NEW.COD_ITENS_PEDIDO) INTO :TOT DO
UPDATE PEDIDO SET TOTAL_PED = TOTAL_PED + :TOT
WHERE COD_PEDIDO= NEW.COD_PEDIDO;
{...}
T+
{...}
FOR SELECT VALOR FROM VALORITEM (NEW.COD_PEDIDO, NEW.COD_ITENS_PEDIDO) INTO :TOT DO
UPDATE PEDIDO SET TOTAL_PED = TOTAL_PED + :TOT
WHERE COD_PEDIDO= NEW.COD_PEDIDO;
{...}
T+
GOSTEI 0
Michelli88
22/11/2003
Afarias muito obrigado querido!!!
Funcionou certinhu, soh tava faltando por
(TOTAL_PED + :TOT) entre parenteses e deu tudo certinhu!
Funcionou certinhu, soh tava faltando por
(TOTAL_PED + :TOT) entre parenteses e deu tudo certinhu!
GOSTEI 0