我们从mssql迁移到了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)
那样执行它时,得到以下输出:
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function spr_getshadowrefs(integer,character varying,character varying,character varying) line 3 at SQL statement
SQL state: 42601
但是我不想丢弃结果,我想看到它们。
所以我尝试用选择SELECT * FROM CALL spr_getItems (0, null, null, null)
调用它,但出现以下语法错误:
ERROR: syntax error at or near "0"
LINE 2: 0,
^
SQL state: 42601
Character: 40
我还尝试以其他几种方式执行它,例如添加“ public”。在过程名称之前,但是在“。”处出现语法错误。或者仅使用select spr_getItems(0,null,null,null)
或select spr_getItems(0)
,select * from call spr_getItems (0)
等,依此类推。
我是不是完全做错了什么,而忽略了文档中的某些内容?
感谢您的帮助!
编辑:澄清我想看结果
您是否尝试过EXEC spr_getItems (0, null, null, null)
?