我有一个非常简单的存储过程:
CREATE OR REPLACE PROCEDURE delivery.get_assets(IN row_limit integer)
AS $$
BEGIN
select group_id
from delivery.assets
order by id desc
limit row_limit;
END ;
$$
LANGUAGE plpgsql ;
我正在尝试使用以下方法运行 SP:
CALL delivery.get_assets(6)
我得到的错误如下:
错误:查询没有结果数据的目的地 提示:如果要丢弃 SELECT 的结果,请改用 PERFORM。CONTEXT:PL/pgSQL 函数 delivery.get_assets(integer) 第 3 行在 SQL 语句 SQL 状态:42601
我正在使用 PostgresQL 11。
在 SQL Server 中,我所要做的就是调用 SP。我在 Postgres 中读到过,你不需要像使用函数那样的 return 语句。任何帮助表示赞赏!
***根据下面的评论,我已将 SP 更改为函数(谢谢 JSpratt 和没有名字的马)。
我快到了,但是现在当我调用该函数时,它以以下格式返回:
如何让它作为网格中的普通数据集返回?
CREATE OR REPLACE FUNCTION delivery.get_assets(
number_rows integer)
RETURNS TABLE(assets_media_id INT, assets_person_id INT)
LANGUAGE 'plpgsql'
COST 100
VOLATILE
ROWS 1000
AS $BODY$
BEGIN
RETURN QUERY SELECT
media_id,
person_id
FROM delivery.assets;
END; $BODY$;