gpt4 book ai didi

postgresql - 函数不返回表

转载 作者:行者123 更新时间:2023-11-29 14:26:47 28 4
gpt4 key购买 nike

即使所有计算都已完成,函数也没有返回数据,我可以在控制台中看到带有信息的消息。

如果尝试创建一个记录变量来存储值并为每一行返回下一个。

CREATE OR REPLACE FUNCTION recompra ()
RETURNS TABLE (
anho INTEGER,
cod_cliente INTEGER,
cliente VARCHAR(255),
cantidad INTEGER,
clasificacion VARCHAR(64)
) AS $$
DECLARE
anho INTEGER;
cod_cliente INTEGER;
cliente VARCHAR(255);
cantidad INTEGER;
clasificacion VARCHAR(64);
anhos_anteriores INTEGER;
BEGIN
FOR anho IN (SELECT DISTINCT(EXTRACT(YEAR FROM v.fecha_factura)) as anhos
FROM ventas_vehiculos as v
GROUP BY anhos
ORDER BY anhos ASC) LOOP
BEGIN
FOR cod_cliente , cliente IN (SELECT d.cod_cliente, CONCAT(TRIM(d.nombre),' ',TRIM(d.apellido))
FROM clientes as d WHERE estado_cliente <> 'Inactivo' LIMIT 10) LOOP
-- TRAE LAS VENTAS POR ANHO
BEGIN
FOR cantidad IN SELECT COUNT(f.nro_factura) FROM ventas_vehiculos as f
WHERE f.cliente = cod_cliente
AND EXTRACT(YEAR FROM f.fecha_factura) =anho LOOP
SELECT COUNT(f.nro_factura) FROM ventas_vehiculos as f
WHERE f.cliente = cod_cliente
AND extract(YEAR FROM f.fecha_factura) < anho INTO anhos_anteriores;

IF (cantidad >0 AND anhos_anteriores > 1) THEN
clasificacion = 'Recompra';
ELSIF (cantidad > 0 AND anhos_anteriores = 0) then
clasificacion = 'Compra';
ELSIF (cantidad =0) THEN
clasificacion = 'No compra';

RAISE NOTICE '% -- % -- % -- % -- % --', anho,cod_cliente,cliente,cantidad,clasificacion;
END IF;

END LOOP; --- cierra loop cantidades por anho

END; -- cierra trae ventas por anho

END LOOP; --- cierra for clientes

END; -- cierra begin clientes

END LOOP; -- CIERRA FOR ANHOS

END;
$$ LANGUAGE plpgsql;

预期输出

year   cod_cliente nombre cantidad clasificacion 
2018 1234 Juan 12 compra
2016 3232 pedro 1 recompra

最佳答案

你的代码有很多问题,我会马上列出那些我能看到的:

  • 您的代码中没有RETURN NEXT 语句。对于要返回的每一行,您都必须有一个。

  • 你声明了与输出参数同名的局部变量,这将导致名称冲突。不要那样做。 RETURNS TABLE 子句中的返回参数已经是 PL/pgSQL 变量。

  • 您应该使用 := 而不是 = 进行赋值。这是受支持的方式,可避免与比较运算符混淆。

关于postgresql - 函数不返回表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57000407/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com