0
我真的需要帮助。我做PostgreSQL中触发和我有这样的代码:如果我使用的是数字,而不是变量FILA(查询内)在postgresql查询中使用变量
CREATE OR REPLACE FUNCTION precioCompra() RETURNS TRIGGER AS $PrecioCompra$
DECLARE
valorProducto numeric;
valorOferta numeric;
valorPack numeric;
valorServicio numeric;
precioIVA numeric;
precioSinIVA numeric;
fila integer;
BEGIN
fila := new."numeroCompra";
SELECT SUM("precioIVA"*"cantidad") as valor
FROM "Producto", (select "codigoProducto", "cantidad"
FROM "IncluyeProducto" WHERE "IncluyeProducto"."numeroCompra" = fila) as producto
where producto."codigoProducto" = "Producto"."codigoProducto" into valorProducto;
IF valorProducto IS NULL then
valorProducto := 0;
END IF;
select SUM("precioIVA"*"cantidad") as valor
FROM "Oferta", (select "codigoProducto", "cantidad"
FROM "IncluyeOferta" WHERE "IncluyeOferta"."numeroCompra" = fila) as oferta
where oferta."codigoProducto" = "Oferta"."codigoProducto" into valorOferta;
IF valorOferta IS NULL then
valorOferta := 0;
END IF;
select SUM("precioIVA"*"cantidad") as valor
FROM "Servicio", (select "codigoServicio", "cantidad"
FROM "IncluyeServicio" WHERE "IncluyeServicio"."numeroCompra" = fila) as servicio
where servicio."codigoServicio" = "Servicio"."codigoServicio" into valorServicio;
IF valorServicio IS NULL then
valorServicio := 0;
END IF;
select SUM("precioIVA"*"cantidad") as valor
FROM "Pack", (select "codigoPack", "cantidad"
FROM "IncluyePack" WHERE "IncluyePack"."numeroCompra" = fila) as pack
where pack."codigoPack" = "Pack"."codigoPack" into valorPack;
IF valorPack IS NULL then
valorPack := 0;
END IF;
RAISE NOTICE 'El valor de Pack es % ',valorPack;
precioIVA := valorProducto + valorPack + valorServicio + valorOferta;
precioSinIVA := precioIVA/1.21;
new."importeIVA" := precioIVA;
new."importeSinIVA" := precioSinIVA;
RETURN NEW;
END;
$PrecioCompra$ LANGUAGE plpgsql;
CREATE TRIGGER PrecioCompra After Insert ON "Compra"
FOR EACH ROW EXECUTE PROCEDURE precioCompra();
它打印一切正确的价值,但后来我看在“ Compra“表,它不起作用。它不会更新precioIVA和precioSinIVA的值。 (过程中的最后一行)
如果我在代码中使用变量fila,则查询的结果为空。
这是在杀我。提前致谢。