我有一个用 pl/pgsql 编写的函数,它的工作方式与下面描述的相同:
CREATE FUNCTION reffunc(text) RETURNS refcursor AS '
BEGIN
OPEN $1 FOR SELECT col FROM test WHERE c1=$1;
RETURN $1;
END;
' LANGUAGE plpgsql;
我希望能够通过单个选择命令来使用它,而不是(使用事务)的记录方式是:
BEGIN;
SELECT reffunc('funccursor');
FETCH ALL IN "<unnamed cursor 1>";
COMMIT;
我确信我以前能够做到这一点,但是我不记得我是如何做到的,或者找到它的文档。这可能吗?或者是否可以编写此函数,使其可以在不使用 refcursor 的情况下输出。
我期望返回多行,并在返回之前在函数中完成一些数据检查。因此有必要使用存储过程。