SQL 解説書

BLOB、CLOB、および DBCLOB ファイル参照変数の参照

BLOB、CLOB、および DBCLOB のファイル参照変数は、 LOB の直接のファイル入出力に使用されるもので、すべてのホスト言語で定義可能です。

これらはネイティブのデータ・タイプではないため、 SQL 拡張機能が使用され、それぞれの変数を表現するのに必要なホスト言語構成をプリコンパイラーが生成します。 REXX の場合、LOB はストリングにマップされます。

LOB ロケーターは LOB バイトを含むものではなく LOB バイトを表すものであるのと同じように、 ファイル参照変数はファイルを含むものではなく間接的に指し示します。 データベースの照会、更新、および挿入では、 ファイル参照変数を使用して 1 つの列値を保管したり検索したりすることができます。

ファイル参照変数には以下の特性があります。

データ・タイプ
BLOB、CLOB、または DBCLOB。 この特性は、変数の宣言時に指定されます。

方向
これはアプリケーション・プログラムによって 実行時に指定される必要があります (ファイル・オプション値の一部として)。 方向は以下のどちらかです。

ファイル名
これはアプリケーション・プログラムによって実行時に指定される必要があります。 以下のいずれかです。

アプリケーション内では、 ファイルは 1 つのファイル参照変数でのみ参照する必要があります。

ファイル名の長さ
これはアプリケーション・プログラムによって実行時に指定される必要があります。 ファイル名の長さをバイト単位で表したものです。

ファイル・オプション
アプリケーションがファイル参照変数を使用するには、 事前にいくつかのオプションの中の 1 つをその変数に割り当てる必要があります。 オプションの設定は、ファイル参照変数構造の中のフィールドの INTEGER 値によって行います。 ファイル参照変数ごとに、以下の値の 1 つを指定する必要があります。

データ長
これは入力では使用されません。 出力のとき、ファイルに書き込まれる新規データの長さがこのデータ長に設定されます。 このデータ長はバイト単位です。

他のすべてのホスト変数と同様に、ファイル参照変数にも標識変数を対応させることができます。

出力ファイル参照変数の例 (C の場合)

入力ファイル参照変数の例 (C の場合)

構造タイプ・ホスト変数の参照

構造タイプ変数は、FORTRAN、REXX、および Java を除く、すべてのホスト言語で定義できます。 これらはネイティブのデータ・タイプではないため、SQL 拡張機能が使用され、 それぞれの変数を表現するのに必要なホスト言語構成をプリコンパイラーが生成します。

他のすべてのホスト変数と同様に、構造タイプ変数にも標識変数を対応させることができます。 構造タイプ・ホスト変数に対応する標識変数は、 他のデータ・タイプの標識変数と同じように動作します。 データベースからヌル値が戻されると、標識変数が設定され、 構造タイプ・ホスト変数は変更されません。

構造タイプ用の実際のホスト変数は、組み込みデータ・タイプとして定義されます。 構造タイプと関連した組み込みデータ・タイプは、以下のようなアクセスが可能でなければなりません。

ホスト変数の代わりにパラメーター・マーカーを使用している場合、 SQLDA に適切なパラメーター・タイプの特性を指定する必要があります。 この場合、SQLDA には SQLVAR 構造のセットが「2 つ」必要です。 また、2 番目の SQLVAR の SQLDATATYPE_NAME フィールドには、 構造タイプのスキーマおよびタイプ名を入れなければなりません。 SQLDA 構造でスキーマを省略すると、エラーが発生します (SQLSTATE 07002)。 このトピックの詳細は、付録 C, SQL 記述子域 (SQLDA)を参照してください。

C プログラムで、(組み込みタイプの BLOB(1048576) を使い、 タイプ POLYGON の) ホスト変数 hv_polyhv_point を定義します。

   EXEC SQL BEGIN DECLARE SECTION;
         static SQL
            TYPE IS POLYGON AS BLOB(1M)
            hv_poly, hv_point;
   EXEC SQL END DECLARE SECTION;

脚注:

27
COBOL では SQL-FILE-READ、FORTRAN では sql_file_read、REXX では READ です。

28
COBOL では SQL-FILE-CREATE、FORTRAN では sql_file_create、REXX では CREATE です。

29
COBOL では SQL-FILE-OVERWRITE、FORTRAN では sql_file_overwrite、REXX では OVERWRITE です。

30
COBOL では SQL-FILE-APPEND、FORTRAN では sql_file_append、REXX では APPEND です。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]