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

この状況を処理するための 1 つの回避策 プロシージャを関数に変換すると、機能します。

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 に答える