SELECTした結果を直接変数にセットするには、SELECT~INTO句を使用します。
サンプル
例)TEST_TBLテーブルの検索結果を変数にセットする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
DECLARE --変数宣言 str1 VARCHAR2(10); str2 VARCHAR2(10); str3 VARCHAR2(10); BEGIN BEGIN SELECT COL1 ,COL2 ,COL3 INTO str1 --COL1の値が入る ,str2 --COL2の値が入る ,str3 --COL3の値が入る FROM TEST_TBL WHERE ID = 1; EXCEPTION --結果が無い場合の処理 WHEN NO_DATA_FOUND THEN str1 := NULL; str2 := NULL; str3 := NULL; END; END; |
解説
- SELECT~INTO句では、必ず1行が返るようなSELECT文でないと、
「ORA-01422: 完全フェッチがリクエストよりも多くの行を戻しました。」エラーが発生します。 - 結果が1行も帰らない場合はEXCEPTIONが発生するので、サンプルのようにWHEN NO_DATA_FOUND THENでキャッチする必要があります。
- SELECTのカラムの並びと、INTOの変数の並びは合わせる必要があります。