關於使用 ADO 讀取 Oracle CLOB 資料型態的問題
使用 ADO 物件讀取 Oracle CLOB 資料的問題
問題 :
透過 Provider=MSDAORA.1 ( Microsoft OLE DB Provider for Oracle ) 建立 ADODB.Connection
當開啟 Recordset 時 , 資料表裡有 CLOB 型態之資料欄位 , 會發生如下錯誤 :
錯誤代碼 : -2147467259
錯誤原因 : 不支援的資料型別。
是因為該 Driver 不支援 CLOB 資料型態之故
解決方式 :
調整 ADODB.Connection 連線字串 , 改用如下幾種 :
1. 使用 Provider=OraOLEDB.Oracle ( Oracle Provider for OLE DB ) 來建資料連線
2. 使用 Oracle 提供的 ( Native ) ODBC Driver , 如下 :
DRIVER={Oracle ODBC Driver}
DRIVER={Oracle in Orahome90} ( 90為版本 )
以下 Driver 為 M$ 提供 , 並不支援 CLOB 型態 , 請勿使用
DRIVER={Microsoft ODBC for Oracle}
DRIVER={Microsoft ODBC Driver for Oracle}
3. 使用 OO4O ( Oracle Objects For Ole )
請將 SELECT CLOB攔位名稱 FROM 某TABLE
改為 SELECT TO_CHAR(CLOB攔位名稱) FROM 某TABLE
即可
PS: 如使用 Delphi DB Express 透過 Oracle Native Driver (OCI ; Oracle Call Interface) 連資料 亦在 SELECT 時, 把 CLOB 欄位包上 TO_CHAR 函數即可 補充一下 : 此方法僅適用於存放 "文字" 資料的 CLOB 型態欄位