Postgres函数返回自定义数据集

时间:2014-12-13 01:40:12

标签: stored-procedures plpgsql postgresql-9.2

有没有办法创建postgres存储函数(使用plpgsql来设置输入参数),返回自定义数据集?

我根据官方手册试图做这样的事情:

CREATE FUNCTION extended_sales(p_itemno int)
RETURNS TABLE(quantity int, total numeric) AS $$
BEGIN
    RETURN QUERY SELECT quantity, quantity * price FROM sales
                 WHERE itemno = p_itemno;
END;
$$ LANGUAGE plpgsql;

但是结果是一个只有一列包含类型(数量,总数)的数组,但是我需要得到两个列数组,数量为'专栏和'总'列。

1 个答案:

答案 0 :(得分:1)

猜测你正在跑步:

SELECT extended_sales(1);

这将返回一个复合类型列。如果要扩展,则必须运行:

SELECT * FROM extended_sales(1);

另外,正如@a_horse_with_no_name所说,这里完全不需要PL / pgSQL函数。大概这是一个简化的例子?

将来请包括:

  • 你的PostgreSQL版本;和
  • 您运行的确切SQL以及您获得的确切输出