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