1
Oracle SQLを使用して結果セットを2回ループする際に問題があります。カーソルを使用して変数に結果セットを保存する
問題
私は与えられたテーブル名に私のすべての外部キーを取得し、カーソルを持っています。このカーソルから結果を使用して、すべての制約をループして無効にします。次にデータのインポートを実行し、同じ結果セットをループして有効にする必要があります。私は
私の脳は、変数に直接ジャンプしたいと思っ何
CURSOR c_fkeys_inn(tabellnavn IN VARCHAR2)
IS
SELECT table_name,constraint_name, status
FROM user_constraints
WHERE (r_constraint_name,r_owner) IN
(SELECT constraint_name, owner
FROM user_constraints
WHERE owner ='POP'
AND table_name=upper(tabellnavn)
)
AND STATUS = 'ENABLED';
。私はカーソルを1回だけ実行し、その結果をカーソルから変数に保存したいと考えています。
これは可能ですか、またはカーソルとループの結果を2回保存するために何かしていますか?
はい。これは正常に動作します。変数の作成方法を説明してもらえますか? – Stene
上記のカーソルに対応するタイプのテーブルを作成する必要があります。いったんタイプUを作成すると、一度にすべてのカーソルレコードをタイプに格納する必要があります。バルク収集を使用して達成できます。 Bulk collectはすべての行を取り出し、コレクションにロードしてPL/SQLエンジンに戻します。すべての行が格納されたら、ループの概念を使用して型内をトラバースし、必要な操作を表示または実行できます。遅く返事をして申し訳ありません(時間のずれのため:) –