PostgreSQL 包中带有 OUT 参数的过程不起作用

Procedure with OUT parameters in a PostgreSQL package not working

从 Oracle 迁移到 PostgreSQL 期间。我遇到一个问题: PostgreSQL 包中带有 OUT 参数的过程不起作用。每当 运行 程序时,它会说 程序不存在

CREATE OR REPLACE PACKAGE pkg_productdetails
IS
  Procedure p_getprod_details(in_locationid numeric, OUT cur_Product_typedetails refcursor, OUT cur_Productlist refcursor);
END pkg_productdetails;

CREATE OR REPLACE PACKAGE BODY pkg_productdetails
IS
  Procedure p_getprod_details(in_locationid numeric, OUT cur_Product_typedetails refcursor, OUT cur_Productlist refcursor) IS
  BEGIN
      OPEN cur_Product_typedetails FOR
--select the cur_Product_typedetails ;

 OPEN cur_Productlist FOR
--select the cur_Productlist;

  END;
END pkg_productdetails;

当我运行这个程序时,它说pkg_productdetails.p_getprod_details(数字)不存在

SELECT pkg_productdetails.p_getprod_details(10001);

我必须解决这个问题 如果我们将过程转换为函数,它就可以工作了。

CREATE OR REPLACE PACKAGE pkg_productdetails
IS
  Function p_getprod_details(in_locationid numeric) RETURNS SETOF refcursor;
END pkg_productdetails;

CREATE OR REPLACE PACKAGE BODY pkg_productdetails
IS
  FUNCTION p_getprod_details(in_locationid numeric) RETURNS SETOF refcursor IS
cur_Product_typedetails refcursor;
cur_Productlist  refcursor;

  BEGIN
  OPEN cur_Product_typedetails FOR
--select the cur_Product_typedetails ;
return next cur_Product_typedetails;


 OPEN cur_Productlist FOR
--select the cur_Productlist;
return next cur_Productlist;

  END;
END pkg_productdetails;

当我运行这个包函数时,它正在工作pkg_productdetails.p_getprod_details(数字)。

SELECT pkg_productdetails.p_getprod_details(10001);

返回 <unnamed portal 1><unnamed portal 2>