以下に説明するものと同じように機能する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;
(トランザクションを使用して)文書化された方法とは対照的に、単一のselectコマンドでこれを使用できるようにしたいと思います。
BEGIN;
SELECT reffunc('funccursor');
FETCH ALL IN "<unnamed cursor 1>";
COMMIT;
私は以前にこれを行うことができたと確信していますが、私がそれをどのように行ったかを思い出せないか、それが文書化されているのを見つけることができません。これは可能ですか?または、リフレクターを使用せずに出力できるようにこの関数を作成することは可能ですか。
複数の行が返され、返される前に関数でデータチェックが行われることを期待しています。したがって、ストアドプロシージャを使用する必要があります。