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

前
次

ホスト変数の宣言および参照

SQL文で使用するプログラム変数はすべて、ホスト変数として宣言する必要があります。ホスト変数は、ホスト言語の規則に従って宣言部で宣言します。通常の有効範囲規則を適用します。ホスト変数名は、長さに制限はありませんが、有効な文字は最初の31文字のみです。ANSI/ISO準拠のため、ホスト変数名は長さを18文字以下にし、先頭が文字で、連続したアンダースコアや後続のアンダースコアを含まないことが必要です。

ホスト変数の外部データ型およびそのソース・データベースまたはターゲット・データベース列の内部データ型は、同じである必要はありませんが、互換性が必要です。表3-6では、必要に応じてOracleで自動的に変換される互換性のあるデータ型を示しています。

Oracle プリコンパイラでは、ほとんどの組込みホスト言語データ型をサポートしています。サポートされるデータ型のリストは、使用ホスト言語の補足資料を参照してください。ユーザー定義のデータ型はサポートされていません。データ型の同値化については、次の項で説明します。

ユーザー定義の構造体の参照はできませんが、Pro*COBOLプリコンパイラを使用すれば、構造体の個々の要素をホスト変数であるかのように参照できます。ホスト変数が使用可能な場所ならば、そのような参照を使用できます。

次の例では、3つのホスト変数を宣言してから、SELECT文を使用して、ホスト変数emp_numberの値に一致する従業員番号をデータベースで検索します。一致する行が見つかると、Oracleでは出力ホスト変数dept_numberemp_nameをその行のDEPTNO列とENAME列の値に設定します。

-- declare host variables
EXEC SQL BEGIN DECLARE SECTION;
 emp_number INTEGER;
 emp_name CHARACTER(10);
 dept_number INTEGER;
EXEC SQL END DECLARE SECTION;
...
display 'Employee number? ';
read emp_number;
EXEC SQL SELECT DEPTNO, ENAME INTO :dept_number, :emp_name
 FROM EMP
 WHERE EMPNO = :emp_number;

ホスト変数の使用方法の詳細は、ホスト変数の使用についてを参照してください。

VARCHAR変数

VARCHAR擬似型を使用すると、可変長文字列を宣言できます。(擬似型は、使用するホスト言語に固有のデータ型ではありません。)VARCHAR変数には2バイト長のフィールドの後に文字列フィールドが1つ続くことを思い出してください。たとえば、Pro*COBOLプリコンパイラでは、次のVARCHAR宣言がどのように処理されるか見てみましょう。

EXEC SQL BEGIN DECLARE SECTION END-EXEC.
 01 ENAME PIC X(20) VARYING.
 EXEC SQL END DECLARE SECTION END-EXEC.

宣言は、配列と長さのメンバーを指定した次のCOBOLグループ項目に拡張されます。

01 ENAME.
 05 ENAME-LEN PIC S9(4) COMP.
 05 ENAME-ARR PIC X(20).

VARCHARの長さは、長さフィールドを参照すればわかります。文字列ファンクションまたは文字カウント・アルゴリズムを使用する必要はありません。

VARCHARの詳細は、このマニュアルに対する使用ホスト言語の補足資料を参照してください。

ホスト変数のガイドライン

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

  • 宣言部で明示的に宣言します。

  • SQL文およびPL/SQLブロックではコロン(:)の接頭辞を付けます。

  • ホスト言語でサポートされているデータ型です。

  • ソースまたはターゲットのデータベース列と互換性のあるデータ型です。

ホスト変数では、次のことはしないください。

ホスト変数では次のことができます。

  • SQL文で式が使用可能な場所での使用

  • インジケータ変数と関連付けることができます。