SELECT * FROM test..TEST.TEST1
-- 訊息 7356,層級 16
-- OLE DB Provider 'OraOLEDB.Oracle' 回傳元資料不一致:編譯期 DBTYPE 129,執行期 130
Oracle Bug 3117040:查詢無精度定義的資料類型(如 NUMBER 無精度、VARCHAR2 無長度)時,OLE DB Provider 編譯期與執行期推斷的資料類型不一致。
已在 9.2.0.4.10 修正。
SELECT CAST(col AS NUMBER(10,2)), CAST(col2 AS VARCHAR2(100)) FROM ...-- 有精度定義的類型不會觸發此 Bug
SELECT col_with_precision FROM oracle_table;
SQL Server 連接 Oracle 時,若遭遇元資料不一致錯誤,優先升級驅動程式;若無法升級,在查詢層面強制轉型規避無精度類型欄位。