SELECT * FROM OPENDATASOURCE('OraOLEDB.Oracle', 'Data Source=ORCL;User ID=scott;Password=tiger').SCOTT.TEST1
-- Msg 7356: OLE DB provider 'OraOLEDB.Oracle' supplied inconsistent metadata for a column.
-- Column 'DUMMY' (compile-time ordinal 1) reported DBTYPE 129 at compile time and 130 at run time.
Oracle 無精度型別(VARCHAR2、NUMBER、DATE、LONG、CLOB)在編譯期與執行期元資料可能不一致。Oracle Bug 3117040,9.2.0.4.10 修復。
-- 錯誤
SELECT * FROM ora_tab;
-- 正確:明確列出欄位並 CAST
SELECT CAST(col1 AS VARCHAR2(100)), CAST(col2 AS NUMBER(10,2)) FROM ora_tab;
SELECT * FROM OPENQUERY(ORA_LINK, 'SELECT col1, col2 FROM scott.test1');
-- 檢查 Oracle 端欄位型別
SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE
FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TEST1';
SELECT *。CAST(... AS NUMBER(p,s)),字串指定 VARCHAR2(n)。SQL Server Integration Services (SSIS) + Oracle OLE DB/ODBC/Attunity 連接器,而非 Linked Server。