19.4.6 a_rdb_SQLDescribeCols()(検索結果列の情報取得)
(1) 機能
検索結果列の情報を取得します。次に示す情報を取得します。
-
検索結果列の列名
-
検索結果列のデータ型
-
検索結果列の最大要素数
-
検索結果列のデータ長
(2) 形式
signed short a_rdb_SQLDescribeCols ( void *ConnectionHandle, /* In */ void *StatementHandle, /* In */ unsigned short ColumnCount, /* In */ a_rdb_SQLColumnInfo_t *ColumnInfo, /* Out */ void *Option /* In */ )
(3) 引数の説明
- ConnectionHandle:
-
コネクションハンドルを指定します。
- StatementHandle:
-
文ハンドルを指定します。
- ColumnCount:
-
情報を取得する検索結果列数を指定します。
a_rdb_SQLNumResultCols()で取得した検索結果列数を指定してください。
- ColumnInfo:
-
検索結果列の情報を取得する領域のアドレスを設定する列情報領域の先頭アドレスを指定します。
a_rdb_SQLColumnInfo_t構造体をColumnCountに指定した数だけ連続させた領域を用意してください。
a_rdb_SQLColumnInfo_t構造体については,「19.7.1 a_rdb_SQLColumnInfo_t構造体(列情報)」を参照してください。
- Option:
-
NULLを指定します。
(4) 戻り値
-
a_rdb_SQLDescribeCols()が正常に終了した場合,a_rdb_RC_SQL_SUCCESSが返却されます。
-
検索結果列の情報取得には成功したが,クライアントメッセージログファイルを格納しているディスクが満杯になった場合,a_rdb_RC_SQL_WARNINGが返却されます。
-
クライアントメッセージログファイルにメッセージが出力できない場合にエラーが発生したときは,エラー要因コードが返却されます。エラー要因コードについては,「19.8 CLI関数の戻り値」を参照してください。
(5) 留意事項
-
a_rdb_SQLNameInfo_t構造体の名称格納領域には,検索結果列名を取得します。検索結果列名については,マニュアルHADB SQLリファレンスのSELECT文の指定形式および規則の規則を参照してください。
-
a_rdb_SQLNameInfo_t構造体の名称格納領域長は,ナル文字1文字のバイト数以上の値を指定してください。ここでのナル文字とは,0x00のことです。
-
a_rdb_SQLNameInfo_t構造体の名称格納領域長が,検索結果列名の長さ(バイト数)にナル文字1文字のバイト数を加算した値以上の場合,名称格納領域には,検索結果列名の末尾にナル文字1文字を付加した文字列が取得されます。
-
a_rdb_SQLNameInfo_t構造体の名称格納領域長が,検索結果列名の長さ(バイト数)にナル文字1文字のバイト数を加算した値より小さい場合,検索結果列名の後半部分(名称格納領域に納まらない部分)が切り捨てられます。名称格納領域には,検索結果列名を先頭から格納していき,最後にナル文字1文字を付加した文字列が格納されます。
-
a_rdb_SQLNameInfo_t構造体の列名長格納領域には,検索結果列名の長さ(バイト数)が取得されます。
-
a_rdb_SQLDataType_t構造体のデータ型コード格納領域には,検索結果列のデータ型を表すコード(データ型コード)が取得されます。各データ型に対応するデータ型コードについては,マニュアルHADB SQLリファレンスのデータ型の種類を参照してください。
-
a_rdb_SQLDataType_t構造体の最大要素数格納領域には,検索結果列の最大要素数が取得されます。検索結果列の最大要素数は,検索結果列が配列型でない場合は常に1となります。
-
a_rdb_SQLDataType_t構造体の列長格納領域と列長属性格納領域には,検索結果列のデータ長に関する情報が取得されます。各領域に取得される値は,検索結果列のデータ型に応じて,次の表に示す値になります。
表19‒4 列長と列長属性 項番
データ型
列長
列長属性
1
INTEGER
8
0
2
SMALLINT
4
0
3
DECIMAL(m,n)※1
m
n
4
NUMERIC(m,n)※1
5
DOUBLE PRECISION
8
0
6
FLOAT
7
CHAR(n)
n
0
8
VARCHAR(n)
n
0
9
DATE
4
0
10
TIME(p)※2
3+↑p÷2↑
p
11
TIMESTAMP(p)※2
7+↑p÷2↑
p
12
BINARY(n)
n
0
13
VARBINARY(n)
n
0
14
ROW
行長
0
- (凡例)
-
m,n,p:正の整数
- 注※1
-
データ型がDECIMAL型またはNUMERIC型の場合,列長として精度を取得します。
また,列長属性として位取りを取得します。
- 注※2
-
データ型がTIME型またはTIMESTAMP型の場合,列長としてデータ長を取得します。また,列長属性として小数秒の桁数を取得します。
-
次に示す場合,a_rdb_SQLDescribeCols()は実行できません。
-
コネクションが確立されていない場合
-
無効な文ハンドルを指定した場合
-
a_rdb_SQLNumResultCols()で取得した検索結果列数以外の値を検索結果列数に指定した場合
-