は、入力が別cursor_functionによって関数に与えられ、別の関数にカーソル値を渡す。*iは所与の入力IDに対応するテーブル内の行を削除する関数を有し*
select * from t1;
id | col1
----+-------
1 | user1
2 | user2
3 | user3
4 | user4
5 | user5
(5 rows)
create or replace function del_t1(int) returns void as $$
declare
a alias for $1;
begin
delete from t1 where id = a;
return;
end;
$$language plpgsql;
create or replace function del_cur(ref refcursor) returns void as $$
declare
a int;
begin
open ref scroll for select id from t1 where id > 3 order by id desc;
fetch first from ref into a;
perform del_t1(a);
loop
a := 0;
fetch next from ref into a;
perform del_t1(a);
if (a=0) then
exit;
end if;
end loop;
end;
$$ language plpgsql;
場合関数は、それがエラーを示していない、
postgres# select del_cur('t1');
を実行され、何の出力は、カーソルがちょうど点滅し、plzは、これを解決するために私を助けていない、これは私の大きなデータベーステーブルの小さな説明ですが、私は合格するカーソル機能を必要としますその値を1つずつ別の関数に渡します。
あなたのソフトウェアのバージョン番号を提供することは言うまでもないでしょう。どのバージョンのPostgreSQLを使用していますか? –