PostgreSQL包中OUT参数无效的过程

时间:2016-07-29 07:14:29

标签: postgresql stored-procedures enterprisedb

从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);

1 个答案:

答案 0 :(得分:0)

我可以解决这个问题 如果我们将程序转换为函数,它的工作。

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>