日本語PDF

13.59 SELECT INTO文

SELECT INTO文は、(SQLのSELECT文と同様に)1つ以上のデータベース表から値を取り出し、それらの値を変数に格納します(SQLのSELECT文ではこの処理は実行されません)。

注意:

SELECT INTO文をBULK COLLECT句とともに使用すると、エイリアシングに対して脆弱になり、予期しない結果が発生する場合があります。詳細は、「SELECT BULK COLLECT INTO文およびエイリアシング」を参照してください。

関連項目:

SQLのSELECT文の構文は、『Oracle Database SQL言語リファレンス』を参照してください。

ここでのトピック

構文

セマンティクス

select_into_statement

DISTINCT | UNIQUE

DISTINCTまたはUNIQUEを指定すると、選択された重複行の1行のみを戻すことができます。これらの2つのキーワードは同義です。重複行とは、SELECT構文のリスト中のそれぞれの式で一致する値を持つ行のことです。

DISTINCT問合せおよびUNIQUE問合せの制限事項

  • すべてのselect list式の総バイト数は、データ・ブロックからオーバーヘッドを除いたサイズに制限されます。このサイズは、初期化パラメータDB_BLOCK_SIZEで指定されます。

  • select_listにLOB列が含まれている場合、DISTINCTは指定できません。

ALL

(デフォルト)すべての重複行のコピーを含め、選択された行がすべて戻されるようにできます。

select_list

SELECT INTO文によって行が戻されない場合、PL/SQLによって事前定義の例外NO_DATA_FOUNDが呼び出されます。この例外を回避するには、条件に一致する行がない場合でも、単一の値を戻す集計ファンクションCOUNT(*)の結果を選択します。

into_clause

この句を使用すると、SELECT INTO文は、単一の行から1つ以上の列を取り出し、それらの値を1つ以上のスカラー変数または1つのレコード変数に格納します。詳細は、into_clause ::=を参照してください。

bulk_collect_into_clause

この句を使用すると、SELECT INTO文は結果セット全体を取り出し、それを1つ以上のコレクション変数に格納します。詳細は、bulk_collect_into_clause ::=を参照してください。

rest_of_statement

SQLのSELECT文のキーワードFROMに続けることができる任意の構造体(『Oracle Database SQL言語リファレンス』を参照)。

  • 例2-25SELECT INTO文を使用した変数への値の代入

  • 例5-50SELECT INTOを使用したレコード変数への値の代入

  • 例6-37ROLLBACK文

  • 例6-38SAVEPOINT文およびROLLBACK文

  • 例6-43パッケージでの自律型ファンクションの宣言

  • 例7-20SQLインジェクションを回避するための妥当性チェック

  • 例12-162つのネストした表に対するデータベースの2つの列のバルク選択

  • 例12-17レコードのネストした表に対するバルク選択

  • 例12-21ROWNUM、SAMPLEおよびFETCH FIRSTによるバルク選択の制限