機能
SQL記述子域に情報を設定します。
記述形式
参照項番
単純値指定 → “2.3 値指定と相手指定”
一般規則
指定された記述子名を持つSQL記述子域が割り当てられていることが必要です。
同一の記述子名のUSING記述子が動的OPEN文に指定されている場合は、動的OPEN文に指定しているカーソルは、閉じられた状態であることが必要です。
同一の記述子名のUSING記述子が動的OPEN文、動的FETCH文、EXECUTE文に指定され、これらの文の実行が終了している場合にDESCRIPTOR設定文でDATAまたはINDICATOR以外の値を設定すると、先のSQL記述子域の内容は失われます。
設定する項目記述子域の番号を指定します。SQLVAR設定番号は、1からALLOCATE DESCRIPTOR文で指定した実現値の値の範囲内であることが必要です。
SQLVAR設定番号のデータ型は、2進の精度を持つ真数であることが必要です。
SQLVAR設定情報は、DESCRIPTOR設定文で設定する情報です。
設定識別子には、SQLVAR設定番号で指定された、項目記述子域の情報を設定します。設定する内容および一般規則を以下に示します。
DATAまたはINDICATOR以外の値を設定する場合、DATAの値は未定義になります。DATAの値が1つのDESCRIPTOR設定文の中で設定する複数の値のうちの1つである場合、DATAの値は最後に代入されます。
設定識別子 | 設定する内容 | データ型 |
---|---|---|
TYPE | データ型のコード | 2進の精度を持つ真数 |
LENGTH |
| 2進の精度を持つ真数 |
OCTET_LENGTH |
| 2進の精度を持つ真数 |
PRECISION |
| 2進の精度を持つ真数 |
SCALE |
| 2進の精度を持つ真数 |
NULLABLE |
| 2進の精度を持つ真数 |
INDICATOR | 指定された項目記述子域に対応する動的パラメタ指定に対する標識変数の値 | 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) 日時型、時間隔型は文字列で表現したデータ長
注2) コードの値は“表4.5 SQLTYPEの値が10を示す場合のDATETIME_INTERVAL_CODEの値”を参照してください。
データ型に対応する各々の値は、“表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) : (DESC1の内容を取得します) : for(VARWCOUNT = 1 ; VARWCOUNT <= VARCOUNT ; ++VARWCOUNT) { EXEC SQL SET DESCRIPTOR 'DESC1' VALUE :VARWCOUNT (5) DATA = :VARDATA; }
(1) 記述子名DESC1のSQL記述子域を割り当てます。
(2) ホスト変数CMDAREAにDELETE文:探索を設定します。
(3) ホスト変数CMDAREAが示すSQL文をSQL文識別子CMDに対応づけます。
(4) SQL文識別子CMDに対応する被準備文の動的パラメタ指定の情報を記述子名DESC1のSQL記述子域に取り込みます。
(5) 記述子名DESC1のSQL記述子域の項目記述子にDATAの値を設定します。