変更内容
ODBCのSQLTables関数にSQL_ALL_CATALOGS、SQL_ALL_SCHEMAS、およびSQL_ALL_TABLE_TYPESを指定した場合の返却値を変更します。
非互換
ODBCのSQLTables関数にSQL_ALL_CATALOGS、SQL_ALL_SCHEMAS、およびSQL_ALL_TABLE_TYPESを指定した場合の返却値が以下のように変更になります。
第2引数 | 第4引数 | 第6引数 | 第8引数 | 返却値 | |
---|---|---|---|---|---|
9.2.0以前 | V10.0.0以降 | ||||
SQL_ALL_CATALOGS | 空の文字列 | 空の文字列 | 任意 | テーブル一覧 | カタログ名一覧 |
空の文字列 | SQL_ALL_SCHEMAS | 空の文字列 | 任意 | スキーマ名一覧 | |
空の文字列 | 空の文字列 | 空の文字列 | SQL_ALL_TABLE_TYPES | テーブル種別一覧 |
備考.SQL_ALL_CATALOGSを指定した場合、V10.0.0以降はカタログ名の重複を排除した結果が返却されます。
SQL_ALL_SCHEMASを指定した場合、V10.0.0以降はスキーマ名の重複を排除した結果が返却されます。
SQL_ALL_TABLE_TYPESを指定した場合、V10.0.0以降はテーブル種別の重複を排除した結果が返却されます。
以下にSQLTables関数にSQL_ALL_CATALOGSを指定してカタログ名一覧を取得する場合の返却値の例を示します。
カタログ名 | スキーマ名 | テーブル名 |
---|---|---|
DB1 | S1 | T1(実表) |
DB1 | S1 | T2(実表) |
DB1 | S2 | T3(実表) |
DB2 | S3 | T4(ビュー表) |
TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS |
---|---|---|---|---|
DB1 | S1 | T1 | TABLE | NULL |
DB1 | S1 | T2 | TABLE | NULL |
DB1 | S2 | T3 | TABLE | NULL |
DB2 | S3 | T4 | VIEW | NULL |
TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS |
---|---|---|---|---|
DB1 | NULL | NULL | NULL | NULL |
DB2 | NULL | NULL | NULL | NULL |
対処方法
9.2.0以前と同様の動作としたい場合、ODBCデータソースのオプションとして、CLI_SQLTABLES_COMPATIBLEにYESを設定してください。
CLI_SQLTABLES_COMPATIBLE={YES|NO}
CLI_SQLTABLES_COMPATIBLE=NO
SQL_ALL_CATALOGS、SQL_ALL_SCHEMAS、SQL_ALL_TABLE_TYPESを指定した場合、カタログ名、スキーマ名、テーブル名、テーブル種別をすべて返却します。
SQLTables関数の第2引数にSQL_ALL_CATALOGSを指定し、第4引数のスキーマ名、第6引数のテーブル名に空の文字列を指定した場合、カタログ名のみ返却し、その他の列はNULLを返却します。
SQLTables関数の第4引数にSQL_ALL_SCHEMASを指定し、第2引数のカタログ名、第6引数のテーブル名に空の文字列を指定した場合、スキーマ名のみ返却し、その他の列はNULLを返却します。
SQLTables関数の第8引数にSQL_ALL_TABLE_TYPESを指定し、第2引数のカタログ名、第4引数のスキーマ名、第6引数のテーブル名に空の文字列を指定した場合、テーブル種別のみ返却し、その他の列はNULLを返却します。