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

前
次

PL/SQLの使用について

Oracleプリコンパイラでは、PL/SQLブロックが1つのSQL文として扱われます。したがって、SQL文と同様に、PL/SQLブロックを文字列ホスト変数またはリテラルに格納できます。PL/SQLブロックを文字列に格納する場合、EXEC SQL EXECUTEキーワード、END-EXECキーワードおよび文の終了記号を省略します。

ただし、プリコンパイラによるSQLとPL/SQLの処理方法には、次の2つの違いがあります。

方法1の場合

PL/SQLブロックにホスト変数が含まれていない場合は、方法1で通常どおりPL/SQLをEXECUTEできます。

方法2の場合

PL/SQLブロック内の入力ホスト変数および出力ホスト変数の数がわかっている場合は、方法2で通常どおりPL/SQL文字列をPREPAREし、EXECUTEできます。

USING句にはすべてのホスト変数を指定する必要があります。このPL/SQL文字列をEXECUTEすると、USING句内のホスト変数はPREPARE済の文字列内の対応するプレースホルダに置き換わります。プリコンパイラでPL/SQLホスト変数がすべて入力ホスト変数として扱われても、値は正しく割り当てられます。入力(プログラム)値は入力ホスト変数に割り当てられ、出力(列)値は出力ホスト変数に割り当てられます。

PREPARE済のPL/SQL文字列内のプレースホルダは、それぞれUSING句内のホスト変数に対応している必要があります。したがって、PREPARE済の文字列に同じプレースホルダが2回以上現れる場合、それぞれがUSING句内のホスト変数に対応している必要があります。

方法3の場合

方法3は、FETCHができることを除けば、方法2と同じです。PL/SQLブロックからFETCHはできないので、かわりに方法2を使用してください。

方法4の場合

PL/SQLブロックに含まれる入力ホスト変数または出力ホスト変数の数がわからない場合は、方法4を使用してください。

方法4を使用するには、すべての入力ホスト変数および出力ホスト変数について1つのバインド記述子を設定します。DESCRIBE BIND VARIABLESを実行すると、入力ホスト変数および出力ホスト変数に関する情報がそのバインド記述子に格納されます。プリコンパイラではPL/SQLホスト変数がすべて入力ホスト変数として扱われるため、DESCRIBE SELECT LISTを実行しても効果はありません。

方法4でのバインド記述子の詳細は、ホスト言語補足を参照してください。

注意:

動的SQL方法4では、表型のパラメータを使用して、ホスト配列をPL/SQLプロシージャにバインドできません。

注意

動的に処理されるPL/SQLブロックでは、行終了文字が無視されるため、ANSI形式のコメント(- - ...)は使用しないでください。ANSI形式のコメントは、行の終わりではなく、ブロックの終わりまで続いてしまいます。かわりに、C形式のコメント(/* ... */)を使用してください。