我们从SQL Server迁移到Postgres,我正在尝试重写存储过程。该程序已正确创建,但无法调用。
这是我的过程签名:
PROCEDURE spr_getItems (
p_kind int = NULL,
p_customerId varchar(256) = NULL,
p_resourceIds varchar(2048) = NULL,
p_referenceIds varchar(2048) = NULL
)
现在当我尝试像这样执行它时
CALL public.spr_getItems (0, null, null, null)
我得到此输出:
错误:查询没有结果数据的目的地
提示:如果要舍弃SELECT的结果,请改用PERFORM。上下文:PL / pgSQL函数spr_getItems(整数,字符变化,字符变化,字符变化)在SQL语句的第3行SQL状态:42601
但是我不想丢弃结果,我想看到它们。
所以我尝试用select调用它>
SELECT * FROM CALL spr_getItems (0, null, null, null)
然后出现此语法错误:
错误:语法错误在“ 0”或附近第2行:0,^SQL状态:42601角色:40
我还尝试了其他几种执行方式,例如添加“ public”。在过程名称之前,但是在“。”处出现语法错误。或者仅使用
select spr_getItems(0, null, null, null)
或select spr_getItems(0)
,select * from call spr_getItems (0)
等,依此类推。
我是不是完全做错了什么,而忽略了文档中的某些内容?
感谢您的帮助!
编辑:澄清我想看结果Edit2:不小心复制了错误的函数名称
我们从SQL Server迁移到Postgres,我正在尝试重写存储过程。该过程已正确创建,但无法调用。这是我的过程签名:PROCEDURE ...
您是否尝试过EXEC spr_getItems (0, null, null, null)
?
错误是指public.spr_getItems