如何从VB SQL查询中处理Excel中的Clob数据类型

时间:2016-02-26 16:02:19

标签: sql excel oracle excel-vba vba

我需要从oracle视图中恢复数据,该视图将列定义为clob数据类型,因为该字段中可能存在超过4000个字符。

我在Excel VB中有Sub Routine执行查询并将结果放入单元格范围但是当我尝试执行查询时遇到“数据类型不支持”的问题。

甚至可以在Excel中查询Clob数据类型列吗?

我无法找到任何可以表明我哪里出错的信息。

感谢您的帮助。

Sub Get_Data4()
Dim cn As Object
Dim rs As Object
Dim strCon As String
Dim strSQL As String
Dim strUsername As String
Dim strPassword As String
Dim strInput As String


'strUsername = InputBox("Input User Name")

'strPassword = InputBox("Input Password")

strCon = "Provider=MSDAORA;Data Source=xxx;User ID=xxx;Password=xxx;"

Set cn = CreateObject("ADODB.Connection")
cn.Open strCon


strSQL = "Select clob_field from Table1"

Set rs = CreateObject("ADODB.RECORDSET")
rs.ActiveConnection = cn
rs.Open strSQL
Sheet1.Range("A4").CopyFromRecordset rs
rs.Close
cn.Close

Call Get_Data
End Sub

1 个答案:

答案 0 :(得分:1)

我也面临同样的问题。我得到了"未指明的错误"在尝试打开记录集时。我发现使用Oracle Home驱动程序可以解决这个问题。

请按照以下步骤在您的计算机中配置Oracle Home Driver -

  1. 安装Oracle Instant Client 12C
  2. 找到此路径 - C:\Oracle\product\12.1.0\client\Network\Admin\Sample
  3. 复制" sqlnet.ora"和" tnsnames.ora"文件
  4. 粘贴到Admin文件夹(如上面路径中所述)
  5. 编辑" tnsnames.ora"文件
  6. 在末尾添加以下代码

    [DS Name as you wish] =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = [your DB server name or IP])(PORT = [Port Number]))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = [Your DB Service Name]")
        )
      )
    
  7. 保存文件

  8. 检查ODBC驱动程序中的驱动程序名称(Control Panel -> Administrative Panel -> Data Sources (ODBC)) 我的驱动程序名称显示为 - OraClient12Home1中的Oracle
  9. 尝试以下连接字符串

    ConnectionString="Driver={Oracle in OraClient12Home1};DBQ=Your SERVICE_NAME;User ld=User ID;pwd=Password;"