ページの先頭行へ戻る
Enterprise Postgres 12 アプリケーション開発ガイド
FUJITSU Software

D.11.8 GET DESCRIPTOR

名前

GET DESCRIPTOR -- SQL記述子領域から情報を入手します。

記述形式

GET DESCRIPTOR descriptor_name :hostvariable = descriptor_header_item [, ... ]
GET DESCRIPTOR descriptor_name VALUE column_number :hostvariable = descriptor_item [, ... ]

説明

GET DESCRIPTORはSQL記述子領域から問い合わせ結果セットに関する情報を取り出し、それをホスト変数に格納します。 記述子領域は通常、このコマンドを使用してホスト言語変数に情報を転送する前に、FETCHまたはSELECTを用いて値が投入されます。

このコマンドには2つの構文があります。 1番目の構文では、そのまま結果セットに適用されている記述子の"ヘッダ"項目を取り出します。 行数が1つの例です。 列番号を追加のパラメータとして必要とする2番目の構文では特定の列に関する情報を取り出します。 例えば、列名と列の実際の値です。

パラメータ

descriptor_name

記述子の名前です。

descriptor_header_item

どのヘッダ情報を取り出すかを識別するトークンです。 結果セット内の列数を入手するCOUNTのみが現在サポートされています。

column_number

情報を取り出す列の番号です。 1から数えます。

descriptor_item

どの列に関する情報を取り出すかを識別するトークンです。 サポートされる項目のリストについては“D.6.1 名前付きSQL記述子領域”を参照してください。

hostvariable

記述子領域から取り出したデータを受け取るホスト変数です。

使用例

この例は結果セット内の列数を取り出します。

EXEC SQL GET DESCRIPTOR d :d_count = COUNT END-EXEC.

この例は最初の列のデータ長を取り出します。

EXEC SQL GET DESCRIPTOR d VALUE 1 :d_returned_octet_length = RETURNED_OCTET_LENGTH END-EXEC.

この例は、2番目の列のデータ本体を文字列として取り出します。

EXEC SQL GET DESCRIPTOR d VALUE 2 :d_data = DATA END-EXEC.

以下は、SELECT current_database();を実行し、列数、列のデータ長、列のデータを表示する手続き全体を示す例です。

EXEC SQL BEGIN DECLARE SECTION END-EXEC.
    01 D-COUNT PIC S9(9) COMP-5.
    01 D-DATA PIC X(1024).
    01 D-RETURNED-OCTET-LENGTH PIC S9(9) COMP.
EXEC SQL END DECLARE SECTION END-EXEC.

    EXEC SQL CONNECT TO testdb AS con1 USER testuser END-EXEC.
    EXEC SQL ALLOCATE DESCRIPTOR d END-EXEC.

*    Declare, open a cursor, and assign a descriptor to the cursor
    EXEC SQL DECLARE cur CURSOR FOR SELECT current_database() END-EXEC.
    EXEC SQL OPEN cur END-EXEC.
    EXEC SQL FETCH NEXT FROM cur INTO SQL DESCRIPTOR d END-EXEC.

*    Get a number of total columns
    EXEC SQL GET DESCRIPTOR d :D-COUNT = COUNT END-EXEC.
    DISPLAY "d_count = " D-COUNT.

*    Get length of a returned column
    EXEC SQL GET DESCRIPTOR d VALUE 1 :D-RETURNED-OCTET-LENGTH = RETURNED_OCTET_LENGTH END-EXEC.
    DISPLAY "d_returned_octet_length = " D-RETURNED-OCTET-LENGTH.

*    Fetch the returned column as a string
    EXEC SQL GET DESCRIPTOR d VALUE 1 :D-DATA = DATA END-EXEC.
    DISPLAY "d_data = " D-DATA.

*    Closing
    EXEC SQL CLOSE cur END-EXEC.
    EXEC SQL COMMIT END-EXEC.

    EXEC SQL DEALLOCATE DESCRIPTOR d END-EXEC.
    EXEC SQL DISCONNECT ALL END-EXEC.

この例を実行すると、結果は以下のようになります。

d_count = +000000001
d_returned_octet_length = +000000006
d_data = testdb

互換性

GET DESCRIPTORは標準SQLで規定されています。

関連項目

ALLOCATE DESCRIPTOR, SET DESCRIPTOR