16.10.8 SQLStatistics,SQLStatisticsW
(1) 機能
テーブルに関連づけられたインデクス情報の一覧をSQL文の結果セットの形式で返します。
(2) 形式
-
SQLStatisticsの場合
SQLRETURN SQLStatistics ( SQLHSTMT StatementHandle, /* In */ SQLCHAR * CatalogName, /* In */ SQLSMALLINT NameLength1, /* In */ SQLCHAR * SchemaName, /* In */ SQLSMALLINT NameLength2, /* In */ SQLCHAR * TableName, /* In */ SQLSMALLINT NameLength3, /* In */ SQLUSMALLINT Unique, /* In */ SQLUSMALLINT Reserved /* In */ )
-
SQLStatisticsWの場合
SQLRETURN SQLStatisticsW ( SQLHSTMT StatementHandle, /* In */ SQLWCHAR * CatalogName, /* In */ SQLSMALLINT NameLength1, /* In */ SQLWCHAR * SchemaName, /* In */ SQLSMALLINT NameLength2, /* In */ SQLWCHAR * TableName, /* In */ SQLSMALLINT NameLength3, /* In */ SQLUSMALLINT Unique, /* In */ SQLUSMALLINT Reserved /* In */ )
(3) 引数
- StatementHandle:
-
ステートメントハンドルを指定します。
- CatalogName:
-
指定内容をカタログ名として使用します。
指定内容は無効になりますが指定自体は必要なため,この関数を使用する際は,空の文字列("")またはNULLを指定します。
- NameLength1:
-
*CatalogNameの長さ※,またはSQL_NTSを指定します。
指定内容は無効になりますが指定自体は必要なため,この関数を使用する際は,0を指定します。
- SchemaName:
-
スキーマ名を指定します。NULLを指定した場合は,すべてのスキーマ名を対象にします。
- NameLength2:
-
*SchemaNameの長さ※,またはSQL_NTSを指定します。
0を指定した場合は,SchemaNameによる絞り込みを行いません。
- TableName:
-
テーブル名を指定します。
NULLを指定した場合は,すべてのテーブル名を対象にします。
- NameLength3:
-
*TableNameの長さ※,またはSQL_NTSを指定します。
0を指定した場合は,TableNameにNULLが指定されたとして動作します。
- Unique:
-
インデクスの種類を指定します。
-
SQL_INDEX_UNIQUE
ユニークインデクスの情報だけを取得します。
-
SQL_INDEX_ALL
すべてのインデクス情報を取得します。
-
- Reserved:
-
指定内容を結果セットのCARDINALITY列とPAGES列の重要度を示すオプションとして使用します。ただし,指定しても無視されます。
- 注※
-
長さの単位は,SQLStatisticsの場合はバイト長,SQLStatisticsWの場合は文字数となります。
(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 |
Smallint |
NON_UNIQUE |
インデクスを定義するキー値(インデクスとして定義する1つまたは複数の列全体の値)を一意でない値にできる場合は,SQL_TRUEを返します。できない場合は,SQL_FALSEを返します。 |
5 |
Varchar |
INDEX_QUALIFIER |
常にナル値を返します。 |
6 |
Varchar |
INDEX_NAME |
インデクス識別子 |
7 |
Smallint |
TYPE |
インデクス種別を返します。 常にSQL_INDEX_OTHERを返します。 |
8 |
Smallint |
ORDINAL_POSITION |
|
9 |
Varchar |
COLUMN_NAME |
列名 |
10 |
Char(1) |
ASC_OR_DESC |
|
11 |
Integer |
CARDINALITY |
常に0を返します。 |
12 |
Integer |
PAGES |
|
13 |
Varchar |
FILTER_CONDITION |
常にナル値を返します。 |
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
08S01 |
通信リンク失敗 |
× |
|
24000 |
無効なカーソル状態 |
カーソルがオープンしている状態のときに実行されました。 |
× |
40001 |
直列化の失敗 |
− |
× |
40003 |
ステートメントの完了が不明 |
× |
|
5C002 |
文字コードの変換エラー |
変換できない文字コードを検出しました。 |
○ |
5C041 |
データ型未サポートエラー |
ドライバは指定されたデータ型をサポートしていません。 |
× |
HY000 |
一般エラー |
− |
× |
HY001 |
メモリ割り当てエラー |
○ |
|
HY008 |
動作がキャンセルされた |
× |
|
HY009 |
NULLポインタの不正使用 |
TableNameにNULLポインタが指定されているか,またはNameLength3に0が指定されています。 |
○ |
HY010 |
関数シーケンスエラー |
− |
○ |
HY013 |
メモリ管理エラー |
× |
|
HY090 |
無効な文字列長または無効なバッファ長 |
名前の長さを格納する引数のどれかの値が,対応する名前の最大長を超えました。 |
○ |
HY100 |
一意性のオプションが範囲外である |
Uniqueに指定された値が無効です。 |
○ |
HY101 |
精度のオプションが範囲外である |
− |
× |
HY117 |
接続がサスペンド中 |
× |
|
HYC00 |
オプション機能は実装されていない |
× |
|
HYT00 |
タイムアウト終了 |
× |
|
HYT01 |
接続タイムアウト終了 |
× |
|
IM001 |
ドライバはこの関数をサポートしていない |
× |
|
IM017 |
非同期ポーリングが不正 |
× |
|
IM018 |
非同期実行が未完了 |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。
(6) 注意事項
この関数を実行したHADBユーザが持っている権限によって,取得できるインデクス情報が変わります。権限と取得できるインデクス情報については,マニュアルHADB システム構築・運用ガイドのHADBユーザが参照できるディクショナリ表とシステム表の範囲を参照してください。