0

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

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

0 回答 0