0

在从 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(numeric) does not exist

SELECT pkg_productdetails.p_getprod_details(10001);
4

1 回答 1

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(numeric)。

SELECT pkg_productdetails.p_getprod_details(10001);

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

于 2016-08-12T05:18:28.107 回答