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

前
次

インジケータ変数の宣言および参照

ホスト変数はすべて、オプションのインジケータ変数に関連付けることができます。インジケータ変数は、2バイトの整数として宣言部で定義し、SQL文では先頭にコロンを付け、INDICATORキーワードを使用しない場合には、ホスト変数の直後に指定する必要があります。

INDICATORキーワード

インジケータ変数の前にオプションのキーワードINDICATORを付けると読みやすくなります。その場合も、インディケータ変数の前にはコロンを付ける必要があります。正しい構文は次のとおりです。

:<host_variable> INDICATOR :<indicator_variable>

これは次の構文と同じ意味です。

:<host_variable>:<indicator_variable>

ホスト・プログラムでは、両方の形式の式を使用できます。

通常、インジケータ変数は、入力ホスト変数へのNULLの割当てと、出力ホスト変数に含まれるNULLまたは切り捨てられた値の検出に使用されます。次の例では、3つのホスト変数と1つのインジケータ変数を宣言してから、SELECT文を使用して、ホスト変数emp_numberの値と一致する従業員番号をデータベースで検索します。一致する行が見つかると、出力ホスト変数salarycommissionが、その行のSAL列とCOMM列の値に設定され、リターン・コードがインジケータ変数ind_commに格納されます。次の文では、ind_commを使用して、一連の処理を選択しています。

EXEC SQL BEGIN DECLARE SECTION;
 emp_number INTEGER;
 salary REAL;
 commission REAL;
 ind_comm SMALLINT; -- indicator variable
EXEC SQL END DECLARE SECTION; 
 pay REAL; -- not used in a SQL statement
display 'Employee number? ';
read emp_number;
EXEC SQL SELECT SAL, COMM
 INTO :salary, :commission:ind_comm
 FROM EMP
 WHERE EMPNO = :emp_number;
IF ind_comm = -1 THEN -- commission is null
 set pay = salary;
ELSE
 set pay = salary + commission;
ENDIF;

詳細は、インジケータ変数の使用についてを参照してください。

インジケータ変数のガイドライン

インジケータ編集の宣言および参照については、次のガイドラインに従ってください。インジケータ変数には、次の必要条件があります。

  • 宣言部で2バイト整数として明示的に宣言

  • SQL文で先頭にコロン(:)

  • SQL文およびPL/SQLブロックではホスト変数の直後に指定(INDICATORキーワードを前に付けない場合)

インジケータ変数では、次のことをしないでください。

  • ホスト言語文で先頭にコロン

  • ホスト言語の文中でホスト変数の直後に指定

  • Oracleの予約語