關於使用 ADO 讀取 Oracle CLOB 資料型態的問題

關於使用 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 型態欄位