私は Postgresql 8.3 を使用しておりrefcursor
、クライアントに a を返す次の単純な関数があります。
CREATE OR REPLACE FUNCTION function_1() RETURNS refcursor AS $$
DECLARE
ref_cursor REFCURSOR;
BEGIN
OPEN ref_cursor FOR SELECT * FROM some_table;
RETURN (ref_cursor);
END;
$$ LANGUAGE plpgsql;
これで、次の SQL コマンドを使用してこの関数を呼び出し、返されたカーソルを操作できますが、カーソル名は PostgreSQL によって自動的に生成されます。
BEGIN;
SELECT function_1(); --It will output the generated cursor name , for example , "<unnamed portal 11>" ;
FETCH 4 from "<unnamed portal 11>";
COMMIT;
38.7.3.5で説明されているように、関数の入力パラメーターとしてカーソル名を明示的に宣言する以外に 。Cursorsを返します。Postgresql が自動的に生成する代わりに、独自のカーソル名を宣言し、このカーソル名を使用して返されたカーソルを操作できますか?
そうでない場合、生成されたカーソル名を取得できるコマンドはありますか?