У меня есть ситуация здесь, мы мигрируем с Oracle на EDB POSTGRES ADVANCED SERVER (ORACLE, СОВМЕСТИМОЙ).Я поделюсь примером процедуры (один и тот же метод используется везде в процедурах нашей организации).
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');