我这里有一个情况,我们正在从 Oracle 迁移到 EDB POSTGRES ADVANCED SERVER(ORACLE COMPATIBLE)。我将分享一个示例程序(在我们的组织程序中到处都使用相同的方法)。
CREATE OR REPLACE PROCEDURE get_emp(
OUT dataset refcursor,
jb character varying)
LANGUAGE 'edbspl'
AS $BODY$
STR VARCHAR2(32000) ;
BEGIN
STR := 'SELECT * FROM EMP WHERE JOB='''||JB||''' ';
DBMS_OUTPUT.PUT_LINE ( STR ) ;
OPEN DATASET FOR STR ;
END GET_EMP$BODY$;
此过程编译成功。但是当我调用程序时
SELECT GET_EMP('CLERK');
结果就像
"<unnamed portal 1>"
在此之后我要做的是
begin;
SELECT GET_EMP('CLERK');
fetch all in "<unnamed portal 1>";
这次我得到了想要的输出。有什么方法可以通过调用如下的过程来获取记录
SELECT GET_EMP('CLERK');