16.10.10 SQLTables,SQLTablesW
(1) 機能
HADBサーバに格納されたテーブル名,スキーマ名およびテーブル種別の一覧を返します。
SQL文の結果セットの形式で出力します。
(2) 形式
-
SQLTablesの場合
SQLRETURN SQLTables ( SQLHSTMT StatementHandle, /* In */ SQLCHAR * CatalogName, /* In */ SQLSMALLINT NameLength1, /* In */ SQLCHAR * SchemaName, /* In */ SQLSMALLINT NameLength2, /* In */ SQLCHAR * TableName, /* In */ SQLSMALLINT NameLength3, /* In */ SQLCHAR * TableType, /* In */ SQLSMALLINT NameLength4 /* In */ )
-
SQLTablesWの場合
SQLRETURN SQLTablesW ( SQLHSTMT StatementHandle, /* In */ SQLWCHAR * CatalogName, /* In */ SQLSMALLINT NameLength1, /* In */ SQLWCHAR * SchemaName, /* In */ SQLSMALLINT NameLength2, /* In */ SQLWCHAR * TableName, /* In */ SQLSMALLINT NameLength3, /* In */ SQLWCHAR * TableType, /* 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にパターン文字列として'%'が指定されたときと同じ動作になります。
- TableType:
-
一致する表種別を示す文字列を指すポインタを指定します。HADB ODBCドライバが表種別として認識する文字列は次のとおりです。
-
SYSTEM TABLE
-
TABLE
-
VIEW
指定をする際,任意で各文字列の両端をアポストロフィ( ' )で囲んでください。また,複数の表種別の結果を取得する場合は,指定値をコンマ( , )で区切ります。
(例)
-
ディクショナリ表およびシステム表を取得する場合
「SYSTEM TABLE」または「'SYSTEM TABLE'」と指定します。
-
実表およびビュー表を取得する場合
「TABLE,VIEW」または「'TABLE','VIEW'」と指定します。
この引数にNULLポインタ,空の文字列(""),またはSQL_ALL_TABLE_TYPESを指定した場合,表種別として「'SYSTEM TABLE','TABLE','VIEW'」が指定されたと見なします。
また,HADB ODBCドライバが表種別として認識する文字列以外を指定した場合,HADB ODBCドライバが認識する文字列だけが有効となり,それ以外の指定値は無視されます。したがって,無効な文字列だけを指定した場合,NULLポインタ,空の文字列("")が指定されたときと同様に,「'SYSTEM TABLE','TABLE','VIEW'」が指定されたと見なします。
-
- NameLength4:
-
*TableTypeの長さ※1,またはSQL_NTSを指定します。
0を指定した場合,TableTypeに「'SYSTEM TABLE','TABLE','VIEW'」が指定されたと見なされます。
- 注※1
-
長さの単位は,SQLTablesの場合はバイト長,SQLTablesWの場合は文字数となります。
- 注※2
-
パターン文字列中に指定できる特殊文字については,「表16‒13 パターン文字列中に指定できる特殊文字」を参照してください。
(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 |
TABLE_TYPE |
表の種類
|
5 |
Varchar |
REMARKS |
常にナル値を返します。 |
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
08S01 |
通信リンク失敗 |
× |
|
24000 |
無効なカーソル状態 |
× |
|
40001 |
直列化の失敗 |
× |
|
40003 |
ステートメントの完了が不明 |
× |
|
5C002 |
文字コードの変換エラー |
変換できない文字コードを検出しました。 |
○ |
5C041 |
データ型未サポートエラー |
ドライバは指定されたデータ型をサポートしていません。 |
× |
HY000 |
一般エラー |
− |
× |
HY001 |
メモリ割り当てエラー |
HADB ODBCドライバは,関数の実行または完了をサポートするために必要なメモリを割り当てられません。 |
○ |
HY008 |
動作がキャンセルされた |
− |
× |
HY009 |
NULLポインタの不正使用 |
× |
|
HY010 |
関数シーケンスエラー |
○ |
|
HY013 |
メモリ管理エラー |
× |
|
HY090 |
無効な文字列長または無効なバッファ長 |
名前の長さを格納する引数のどれかの値が,対応する名前の最大長を超えました。 |
○ |
HYC00 |
オプション機能は実装されていない |
− |
× |
HYT00 |
タイムアウト終了 |
× |
|
HYT01 |
接続タイムアウト終了 |
× |
|
IM001 |
ドライバはこの関数をサポートしていない |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。
(6) 注意事項
この関数を実行したHADBユーザが持っている権限によって,取得できるテーブルの情報が変わります。権限と取得できるテーブルの情報については,マニュアルHADB システム構築・運用ガイドのHADBユーザが参照できるディクショナリ表とシステム表の範囲を参照してください。