16.10.2 SQLColumns,SQLColumnsW
(1) 機能
列情報の一覧を結果セットとして返します。
(2) 形式
-
SQLColumnsの場合
SQLRETURN SQLColumns ( SQLHSTMT StatementHandle, /* In */ SQLCHAR * CatalogName, /* In */ SQLSMALLINT NameLength1, /* In */ SQLCHAR * SchemaName, /* In */ SQLSMALLINT NameLength2, /* In */ SQLCHAR * TableName, /* In */ SQLSMALLINT NameLength3, /* In */ SQLCHAR * ColumnName, /* In */ SQLSMALLINT NameLength4 /* In */ )
-
SQLColumnsWの場合
SQLRETURN SQLColumnsW ( SQLHSTMT StatementHandle, /* In */ SQLWCHAR * CatalogName, /* In */ SQLSMALLINT NameLength1, /* In */ SQLWCHAR * SchemaName, /* In */ SQLSMALLINT NameLength2, /* In */ SQLWCHAR * TableName, /* In */ SQLSMALLINT NameLength3, /* In */ SQLWCHAR * ColumnName, /* In */ SQLSMALLINT NameLength4 /* In */ )
(3) 引数
- StatementHandle:
-
ステートメントハンドルを指定します。
- CatalogName:
-
指定内容をカタログ名として使用します。
指定内容は無効になりますが指定自体は必要なため,この関数を使用する際は,空の文字列("")またはNULLを指定します。
- NameLength1:
-
*CatalogNameの長さ※1,またはSQL_NTSを指定します。
指定内容は無効になりますが指定自体は必要なため,この関数を使用する際は,0を指定します。
- SchemaName:
-
スキーマ名のパターン文字列※2を指定します。NULLを指定した場合は,パターン文字列として'%'が指定されたときと同じ動作となります。
- NameLength2:
-
*SchemaNameの長さ※1,またはSQL_NTSを指定します。
0を指定した場合は,SchemaNameにパターン文字列として'%'が指定されたときと同じ動作となります。
- TableName:
-
テーブル名のパターン文字列※2を指定します。NULLを指定した場合は,パターン文字列として'%'が指定されたときと同じ動作となります。
- NameLength3:
-
*TableNameの長さ※1,またはSQL_NTSを指定します。
0を指定した場合は,TableNameにパターン文字列として'%'が指定されたときと同じ動作となります。
- ColumnName:
-
列名のパターン文字列※2を指定します。NULLを指定した場合は,パターン文字列として'%'が指定されたときと同じ動作となります。
- NameLength4:
-
*ColumnNameの長さ※1,またはSQL_NTSを指定します。
0を指定した場合は,ColumnNameにパターン文字列として'%'が指定されたときと同じ動作となります。
- 注※1
-
長さの単位は,SQLColumnsの場合はバイト長,SQLColumnsWの場合は文字数となります。
- 注※2
-
パターン文字列中に指定できる特殊文字を次の表に示します。
表16‒13 パターン文字列中に指定できる特殊文字 指定できる特殊文字
意味
_(下線)
任意の1文字です。
%
0文字以上の任意の長さの文字列です。
\
エスケープ文字です。パターン文字列中に指定したエスケープ文字の直後の特殊文字を通常の文字として扱います。
\は,Shift-JISの0x5c(UTF-16LEの0x5c00)で示される文字です。UTF-8の場合は,\(バックスラッシュ)で表示される文字を指定してください。
(4) 戻り値
SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,またはSQL_INVALID_HANDLEが返されます。
実行後に返却される結果セットの形式を次の表に示します。
列番号 |
型 |
列名 |
列の意味 |
---|---|---|---|
1 |
Varchar |
TABLE_CAT |
常にナル値を返します。 |
2 |
Varchar |
TABLE_SCHEM |
スキーマ名 |
3 |
Varchar |
TABLE_NAME |
表名 |
4 |
Varchar |
COLUMN_NAME |
列名 |
5 |
smallint |
DATA_TYPE |
ODBC SQLデータ型識別子 |
6 |
Varchar |
TYPE_NAME |
型名 |
7 |
Integer |
COLUMN_SIZE |
列サイズ |
8 |
Integer |
BUFFER_LENGTH |
列のデータ定義長 |
9 |
Smallint |
DECIMAL_DIGITS |
小数点以下の桁数 |
10 |
Smallint |
NUM_PREC_RADIX |
基数
|
11 |
Smallint |
NULLABLE |
この型にナル値を使用できるかどうかを返します。
|
12 |
Varchar |
REMARKS |
常にナル値を返します。 |
13 |
Varchar |
COLUMN_DEF |
列の既定値を返します。
|
14 |
Smallint |
SQL_DATA_TYPE |
ODBC SQLデータ型識別子 |
15 |
Smallint |
SQL_DATETIME_SUB |
ODBC SQLデータ型識別子のサブコード |
16 |
Integer |
CHAR_OCTET_LENGTH |
文字データ型についての列の最大バイト長 |
17 |
Integer |
ORDINAL_POSITION |
列番号 1から始まります。 |
18 |
Varchar |
IS_NULLABLE |
この型にナル値が使用できるかどうかを返します。
|
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
08S01 |
通信リンク失敗 |
× |
|
24000 |
無効なカーソル状態 |
× |
|
40001 |
直列化の失敗 |
× |
|
40003 |
ステートメントの完了が不明 |
× |
|
5C002 |
文字コードの変換エラー |
変換できない文字コードを検出しました。 |
○ |
5C041 |
データ型未サポートエラー |
ドライバは指定されたデータ型をサポートしていません。 |
× |
HY000 |
一般エラー |
− |
× |
HY001 |
メモリ割り当てエラー |
○ |
|
HY008 |
動作がキャンセルされた |
× |
|
HY009 |
NULLポインタの不正使用 |
× |
|
HY010 |
関数シーケンスエラー |
○ |
|
HY013 |
メモリ管理エラー |
× |
|
HY090 |
無効な文字列長または無効なバッファ長 |
名前の長さを格納する引数のどれかの値が,対応する名前の最大長を超えました。 |
○ |
HY117 |
接続がサスペンド中 |
− |
× |
HYC00 |
オプション機能は実装されていない |
× |
|
HYT00 |
タイムアウト終了 |
× |
|
HYT01 |
接続タイムアウト終了 |
× |
|
IM001 |
ドライバはこの関数をサポートしていない |
× |
|
IM017 |
非同期ポーリングが不正 |
× |
|
IM018 |
非同期実行が未完了 |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。
(6) 注意事項
この関数を実行したHADBユーザが持っている権限によって,取得できる列情報が変わります。権限と取得できる列情報については,マニュアルHADB システム構築・運用ガイドのHADBユーザが参照できるディクショナリ表とシステム表の範囲を参照してください。