无法运行Postgres存储过程

时间:2019-03-20 17:01:54

标签: postgresql postgresql-11

我有一个非常简单的存储过程:

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和不带名字的马)。

我快到了,但是现在当我调用该函数时,它以以下格式返回:

returned data

如何将其作为网格中的常规数据集返回?

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$;

0 个答案:

没有答案