Fórum Sp efetuar Update, comparando o Old e New #42804

04/03/2004

0

Caros amigos tenho uma Sp que efetua as alterações na minha tabela terreno
assim:

CREATE PROCEDURE UPDATE_TERRENO(
INDICE INTEGER,
COD_LET INTEGER,
NUMERO VARCHAR(10),
QUADRA VARCHAR(10),
FRENTE NUMERIC(15,2),
TRAS NUMERIC(15,2),
LADO_D NUMERIC(15,2),
LADO_E NUMERIC(15,2),
M2 NUMERIC(15,2),
OBS VARCHAR(60),
NORTE VARCHAR(60),
OESTE VARCHAR(60),
LESTE VARCHAR(60),
SUL VARCHAR(60),
P_NORTE VARCHAR(20),
P_OESTE VARCHAR(20),
P_LESTE VARCHAR(20),
P_SUL VARCHAR(20),
VALOR NUMERIC(15,2),
VLR_DEVIDO NUMERIC(15,2))
AS
begin
BEGIN
UPDATE TERRENOS SET
INDICE=:INDICE,
COD_LET=:COD_LET,
NUMERO=:NUMERO,
QUADRA=:QUADRA,
FRENTE=:FRENTE,
TRAS=:TRAS,
LADO_D=:LADO_D,
LADO_E=:LADO_E,
M2=:M2,
OBS=:OBS,
NORTE=:NORTE,
OESTE=:OESTE,
LESTE=:LESTE,
SUL=:SUL,
P_NORTE=:P_NORTE,
P_OESTE=:P_OESTE,
P_LESTE=:P_LESTE,
P_SUL=:P_SUL,
VALOR=:valor,
VLR_DEVIDO=:VLR_DEVIDO /* aqui preciso do calculo */
WHERE INDICE =:INDICE;
END

end


Na ultima linha VLR_DEVIDO=:VLR_DEVIDO tenho que fazer uma um calculo como em uma trigger

ex: terrenos.VLR_DEVIDO = VLR_DEVIDO + (new.valor - old.valor)

bom parece meio confuso mais só preciso saber o Valor do Campo (valor) antes e depois da Update
se fosse em uma trigger usaria os comandos New e Old,,,,


Grato pela atenção


Marcos Fernando

Marcos Fernando

Responder

Posts

05/03/2004

Afarias

só TRIGGERs possuem o contexto OLD e NEW -- em um procedimento, isto não faz sentido.

Como vc está pegando o valor para fazer a atualização, o valor q vc tem em mãos é o ´NEW´ -- para pegar o ´OLD´ faça um SELECT na tabela *antes* de proceder a atualização::

select valor from tabela where indice=:indice into :old_valor;



T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar