我有一个非常简单的存储过程:
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。内容: PL / pgSQL函数delivery.get_assets(integer)SQL语句的第3行 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$;