3

メタデータのメソッドgetColumns()は、シノニムに対して空の ResultSet を返しています (テーブルとビューの場合、列のリストを適切に返しています)。

これは、Oracle 11g Express で最新の Oracle JDBC ドライバー (11.2.3) を使用して発生します。

これは他の SQL サーバーでも発生しますか?

この問題を解決するためのヘルプ/アイデアは大歓迎です。

4

2 に答える 2

9

デフォルトでは、Oracle ドライバは のシノニムに関する情報を返しませんgetColumns()。これは、Oracle 11g JDBC Developer's Guide のPerformance Extensionsに記載されています。

getColumns に関する考慮事項

デフォルトではgetColumns、シノニムが指定されている場合、メソッドは列に関する情報を取得しません。シノニムが指定されている場合に情報の取得を有効にするには、setIncludeSynonyms次のように接続でメソッドを呼び出す必要があります。

( (oracle.jdbc.driver.OracleConnection)conn ).setIncludeSynonyms(true)

これにより、接続上の後続のすべてのgetColumnsメソッド呼び出しに同義語が含まれるようになります。これは に似ていsetRemarksReportingます。または、includeSynonyms接続プロパティを設定できます。これはremarksReporting接続プロパティに似ています。

ただし、が trueの場合、シノニムが存在する場合、列にincludeSynonyms返されるオブジェクトの名前はシノニム名になることに注意してください。table_nameこれは、テーブル名を に渡した場合でも当てはまりますgetColumns

この最後の項目は、心に留めておくことが非常に重要であることに注意してください。

于 2013-08-31T07:38:19.327 に答える