プライマリ・コンテンツに移動
Oracle® Database Oracleプリコンパイラのためのプログラマーズ・ガイド
12c リリース1 (12.1)
B71398-03
目次へ移動
目次
索引へ移動
索引

前
次

SELECT (実行可能埋込みSQL)

SELECTの用途

ホスト変数に選択した値を割り当て、1つ以上の表、ビューまたはスナップショットからデータを取得します。

SELECTの前提条件

表またはスナップショットからデータを選択するには、表またはスナップショットが自分のスキーマにあるか、またはその表あるいはスナップショットに対するREADまたはSELECT権限が必要です。

ビューの実表から行を選択するには、ビューが属するスキーマの所有者に、実表に対するREADまたはSELECT権限が必要です。また、ビューが自分以外のスキーマにある場合は、そのビューに対するREADまたはSELECT権限が必要です。

READ ANY TABLEまたはSELECT ANY TABLEシステム権限を使用すると、すべての表、スナップショットまたはビューの実表からデータを選択できます。

OracleをDBMS MACモードで使用している場合は、DBMSラベルが問合せ先の各表、ビューまたはスナップショットの作成ラベルより上位にあるか、READUPシステム権限が必要です。

READ権限は、SELECT ... FOR UPDATE操作には使用できません。

SELECTの構文

SELECTのキーワードおよびパラメータ

AT

SELECT文の発行先のデータベースを指定します。次のいずれかを使用してデータベースを指定します。

db_nameは、DECLARE DATABASE文で事前に宣言したデータベース識別子。

:host_variableは、値が事前に宣言したdb_nameであるホスト変数。

この句を省略した場合、SELECT文はデフォルトのデータベースに対して発行されます。

select_list

非埋込みSELECTコマンドと同じですが、リテラルのかわりにホスト変数を使用できます。

INTO

SELECT文が戻すデータを受け取る出力ホスト変数とオプションのインディケータ変数を指定します。これらの変数は、すべてスカラーか、すべて配列である必要があります。ただし、配列は同じサイズでなくてもかまいません。

WHERE

戻される行を、条件がTRUEの行のみに制限します。conditionには、ホスト変数を使用できますが、インジケータ変数は使用できません。これらのホスト変数は、スカラーと配列のどちらでもかまいません。

その他のキーワードおよびパラメータはすべて、非埋込みSQL SELECTコマンドと同じです。

SELECTの使用上の注意

WHERE句の条件を満たす行がない場合、行は取得されず、OracleからはSQLCAのSQLCODEコンポーネントを使用してエラー・コードが戻されます。

SELECT文ではコメントを使用して指示、すなわちヒントをOracleオプティマイザに渡すことができます。オプティマイザでは、このヒントを使用して文の実行計画が選択されます。ヒントの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

SELECTの例

この例では、埋込みSQL SELECTコマンドの使用方法を示しています。

EXEC SQL SELECT ename, sal + 100, job 
 INTO :ename, :sal, :job 
 FROM emp 
 WHERE empno = :empno

SELECTの関連トピック

DECLARE CURSOR(埋込みSQLディレクティブ)DECLARE DATABASE(Oracle埋込みSQLディレクティブ)EXECUTE(実行可能埋込みSQL)FETCH(実行可能埋込みSQL)およびPREPARE(実行可能埋込みSQL)