Hitachi

Hitachi Advanced Data Binder AP開発ガイド


16.10.8 SQLStatistics,SQLStatisticsW

〈この項の構成〉

(1) 機能

テーブルに関連づけられたインデクス情報の一覧をSQL文の結果セットの形式で返します。

(2) 形式

(3) 引数

StatementHandle

ステートメントハンドルを指定します。

CatalogName

指定内容をカタログ名として使用します。

指定内容は無効になりますが指定自体は必要なため,この関数を使用する際は,空の文字列("")またはNULLを指定します。

NameLength1

*CatalogNameの長さ,またはSQL_NTSを指定します。

指定内容は無効になりますが指定自体は必要なため,この関数を使用する際は,0を指定します。

SchemaName

スキーマ名を指定します。NULLを指定した場合は,すべてのスキーマ名を対象にします。

NameLength2

*SchemaNameの長さ,またはSQL_NTSを指定します。

0を指定した場合は,SchemaNameによる絞り込みを行いません。

TableName

テーブル名を指定します。

NULLを指定した場合は,すべてのテーブル名を対象にします。

NameLength3

*TableNameの長さ,またはSQL_NTSを指定します。

0を指定した場合は,TableNameNULLが指定されたとして動作します。

Unique

インデクスの種類を指定します。

  • SQL_INDEX_UNIQUE

    ユニークインデクスの情報だけを取得します。

  • SQL_INDEX_ALL

    すべてのインデクス情報を取得します。

Reserved

指定内容を結果セットのCARDINALITY列とPAGES列の重要度を示すオプションとして使用します。ただし,指定しても無視されます。

注※

長さの単位は,SQLStatisticsの場合はバイト長,SQLStatisticsWの場合は文字数となります。

(4) 戻り値

SQL_SUCCESSSQL_SUCCESS_WITH_INFOSQL_ERROR,またはSQL_INVALID_HANDLEが返されます。

返却される結果セットの形式を次の表に示します。

表16‒17 返却される結果セットの形式

列番号

列名

列の意味

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

  • 単一列インデクスの場合,1を返します。

  • 複数列インデクスの場合,インデクスを構成する列の順序(インデクスを構成する列名順を識別する番号で,1から始まる整数)を返します。

9

Varchar

COLUMN_NAME

列名

10

Char(1)

ASC_OR_DESC

  • B-treeインデクスを昇順に定義する場合,"A"を返します。

  • B-treeインデクスを降順に定義する場合,"D"を返します。

  • テキストインデクスまたはレンジインデクスの場合,ナル値を返します。

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ポインタが指定されているか,またはNameLength30が指定されています。

HY010

関数シーケンスエラー

HY013

メモリ管理エラー

×

HY090

無効な文字列長または無効なバッファ長

名前の長さを格納する引数のどれかの値が,対応する名前の最大長を超えました。

HY100

一意性のオプションが範囲外である

Uniqueに指定された値が無効です。

HY101

精度のオプションが範囲外である

×

HY117

接続がサスペンド中

×

HYC00

オプション機能は実装されていない

×

HYT00

タイムアウト終了

×

HYT01

接続タイムアウト終了

×

IM001

ドライバはこの関数をサポートしていない

×

IM017

非同期ポーリングが不正

×

IM018

非同期実行が未完了

×

(凡例)

○:HADB ODBCドライバが返すことがあるSQLSTATEです。

×:HADB ODBCドライバが返さないSQLSTATEです。

−:なし。

(6) 注意事項

この関数を実行したHADBユーザが持っている権限によって,取得できるインデクス情報が変わります。権限と取得できるインデクス情報については,マニュアルHADB システム構築・運用ガイドHADBユーザが参照できるディクショナリ表とシステム表の範囲を参照してください。