機能
SQL記述子域から情報を取得します。
記述形式
参照項番
単純相手指定 → “2.3 値指定と相手指定”
一般規則
指定された記述子名を持つSQL記述子域が割り当てられていることが必要です。
取得する項目記述子域の番号を指定します。
SQLVAR取得番号のデータ型は、2進の精度を持つ真数であることが必要です。
SQLVAR取得番号は、1からCOUNTの値の範囲内であることが必要です。
SQLVAR取得情報は、DESCRIPTOR取得文で取得する情報です。
取得識別子には、SQLVAR取得番号で指定された、項目記述子域の内容を取得します。取得される内容および一般規則を以下に示します。
相手指定に対するDATAの値を取得するには、同一の記述子名のUSING記述子が指定された動的FETCH文またはEXECUTE文が実行されていることが必要です。
取得識別子 | 取得する内容 | データ型 |
---|---|---|
TYPE | データ型のコード | 2進の精度を持つ真数 |
LENGTH |
| 2進の精度を持つ真数 |
OCTET_LENGTH |
| 2進の精度を持つ真数 |
PRECISION |
| 2進の精度を持つ真数 |
SCALE |
| 2進の精度を持つ真数 |
NULLABLE |
| 2進の精度を持つ真数 |
INDICATOR | 指定された項目記述子域に対応する動的パラメタ指定または相手指定に対する標識変数の値(注3) | 2進の精度を持つ真数 |
DATA |
| TYPE, LENGTH, OCTET_LENGTH, PRECISION, SCALE, CHARACTER_SET_NAME, DATETIME_INTERVAL_CODEで指定されるデータ型に一致 |
NAME | 動的パラメタ指定または相手指定に対応する列名 | 長さ38バイト以上の文字列型 |
CHARACTER_SET_NAME |
| 長さ38バイト以上の文字列型 |
DATETIME_INTERVAL_CODE |
| 2進の精度を持つ真数 |
DATETIME_INTERVAL_PRECISION |
| 2進の精度を持つ真数 |
注1) 取得した値が32,000を超える場合は、LENGTHまたはOCTET_LENGTHには、32,000が設定されます。
注2) 日時型、時間隔型は文字列で表現したデータ長が設定されます。
注3) 取得した値が32,000を超える場合は、0または32,000が設定されます。この場合、コード変換が発生しない環境で動作させてください。
データ型に対応する各々の値は、“表4.7 SQLのデータ型とSQL記述子域の値の対応”を参照してください。
使用例
SQL文識別子CMDに対応する被準備文の動的パラメタ指定の情報を取得します。なお、可変長文字型の展開規則は、“6.3 SQL埋込みCプログラム”を参照してください。
EXEC SQL BEGIN DECLARE SECTION; VARCHAR CMDAREA[100]; EXEC SQL END DECLARE SECTION; : EXEC SQL ALLOCATE DESCRIPTOR 'DESC1' WITH MAX 50; (1) strcpy(CMDAREA.sqlvar,"DELETE FROM S1.TBL WHERE COL1 = ? AND COL2 = ?"); (2) CMDAREA.sqllen = strlen(CMDAREA.sqlvar); EXEC SQL PREPARE CMD FROM :CMDAREA; (3) EXEC SQL DESCRIBE INPUT CMD USING SQL DESCRIPTOR 'DESC1'; (4) EXEC SQL GET DESCRIPTOR 'DESC1':VARCOUNT = COUNT; (5) for(VARWCOUNT = 1 ; VARWCOUNT <= VARCOUNT ; ++VARWCOUNT) { EXEC SQL GET DESCRIPTOR 'DESC1' VALUE :VARWCOUNT (6) :VARTYPE = TYPE,:VARLENG = LENGTH,:VAROCTET = OCTET_LENGTH, :VARPREC = PRECISION,:VARSCALE = SCALE,:VARNULL = NULLABLE, :VARNAME = NAME,:VARCHAR = CHARACTER_SET_NAME; }
(1) 記述子名DESC1のSQL記述子域を割り当てます。
(2) ホスト変数CMDAREAにDELETE文:探索を設定します。
(3) ホスト変数CMDAREAが示すSQL文をSQL文識別子CMDに対応づけます。
(4) SQL文識別子CMDに対応する被準備文の動的パラメタ指定の情報を記述子名DESC1のSQL記述子域に取り込みます。
(5) 記述子名DESC1のSQL記述子域からCOUNTの値を取得します。
(6) 記述子名DESC1のSQL記述子域の項目記述子域からTYPE、LENGTH、OCTET_LENGTH、PRECISION、SCALE、NULLABLE、NAME、CHARACTER_SET_NAMEの値を取得します。