カーソル変数への値の割り当て
SET ステートメントを使用すると、いくつかの方法でさまざまな時点で結果セットをカーソル変数に割り当てることができます。
このタスクについて
- カーソル変数への照会結果セットの割り当て
- SET ステートメントと CURSOR FOR キーワードを使用することにより、選択照会の結果セットをカーソル変数に割り当てることができます。 以下の例では、T という表への照会に関連した結果セットが、表と同じ行定義を持つ c1 という名前のカーソル変数に割り当てられます。T が次のように定義される場合、
次のように定義された、厳密に型付けされたカーソル変数 C1 を想定すると、CREATE TABLE T (C1 INT, C2 INT, C3 INT);CREATE TYPE simpleRow AS ROW (c1 INT, c2 INT, c3 INT); CREATE TYPE simpleCur AS CURSOR RETURNS simpleRow; DECLARE c1 simpleCur;次のように割り当てることができます。
c1 の定義は表 T と互換であるため、厳密な型判定の検査が成功します。c1 が緩やかに型付けされたカーソルであれば、データ・タイプ検査は実行されないため、この場合もこの割り当てが成功します。SET c1 = CURSOR FOR SELECT * FROM T; - カーソル変数へのリテラル値の割り当て
- SET ステートメントと CURSOR FOR キーワードを使用することにより、選択照会の結果セットをカーソル変数に割り当てることができます。 以下の例では、T という表への照会に関連した結果セットが、表と同じ行定義を持つ c1 という名前のカーソル変数に割り当てられます。表 T が次のように定義されるとします。
CREATE TABLE T (C1 INT, C2 INT, C3 INT);行タイプ simpleRow、およびカーソル・タイプ simpleCur がそれぞれ次のように作成されるとします。CREATE TYPE simpleRow AS ROW (c1 INT, c2 INT, c3 INT); CREATE TYPE simpleCur AS CURSOR RETURNS simpleRow;厳密に型付けされたカーソル変数 c1 がプロシージャー内で次のように宣言されるとします。DECLARE c1 simpleCur;次のようにして、リテラル値をカーソル c1 に割り当てることができます。
リテラル値はカーソル定義と互換であるため、厳密な型判定の検査が成功します。 以下の例では、リテラル・データ・タイプがカーソル・タイプ定義と非互換であるため、リテラル値の割り当てが失敗します。SET c1 = CURSOR FOR VALUES (1, 2, 3);SET c1 = CURSOR FOR VALUES ('a', 'b', 'c'); - カーソル変数値へのカーソル変数値の割り当て
- 2 つのカーソル変数の結果セット定義が同じである場合に限り、1 つのカーソル変数値を別のカーソル変数に割り当てることができます。
以下に例を示します。
厳密に型付けされたカーソル変数 c1 および c2 が次のように定義されているとします。
CREATE TYPE simpleRow AS ROW (c1 INT, c2 INT, c3 INT); CREATE TYPE simpleCur AS CURSOR RETURNS simpleRow DECLARE c1 simpleCur; DECLARE c2 simpleCur;次のように c2 に値が割り当てられたとします。SET c2 = CURSOR FOR VALUES (1, 2, 3);次のようにして、c2 の結果セットをカーソル変数 c1 に割り当てることができます。SET c1 = c2;カーソル変数に値を割り当てた後、カーソル変数およびカーソル変数フィールド値の割り当てや参照が可能になります。