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