存储在Oracle DB中的VBScript_Get xml数据(DataType - CLOB)

时间:2017-11-08 12:48:00

标签: oracle vbscript

这似乎是一个非常基本的问题,但我无法找到任何解决方案。我不得不承认我对数据库的经验很少。我查看了THIS问题,但这对我没什么帮助。

问题:

每当我修改我的查询以从数据库中获取 CLOB 类型的数据时,我都会收到错误“Unspecified Error”。在下面的代码中,我编写了查询strQuery = "select CDATA from WR2_USR.router_xml_data where EVENT_ID= '987787454'"。 CDATA列(数据类型 CLOB )包含一个Long XML,我需要将其提取并存储在变量中以供进一步使用。有没有办法实现这一目标?

代码

Option Explicit
Dim objCon, objRs, strCon, strQuery, i, strServer, strUid, strPwd
set objCon = CreateObject("adodb.connection")
set objRs = CreateObject("adodb.recordset")
strServer = ""       'Contains the correct Server information
strUid = ""          'Contains the user name
strPwd = ""          'Contains the password
strCon = "Driver={Microsoft ODBC for Oracle};SERVER="&strServer&";uid="&strUid&";pwd="&strPwd &";"
strQuery = "select CDATA from WR2_USR.router_xml_data where EVENT_ID= '987787454'"
objCon.open strCon
if objCon.state=1 then
    objRs.open strQuery, objCon          '<--- GETTING ERROR HERE
    while (not objRs.eof)
        msgbox objRs.fields.count
        for i=0 to objRs.fields.count-1 step 1
            msgbox cstr(objRs.fields.item(i).value)
        next
        objRs.movenext
    Wend
end if

set objCon = Nothing
set objRs = Nothing

错误

enter image description here

列详细信息

enter image description here

注意:如果我更改查询以获取其他列的数据(不是CLOB数据类型),则代码运行正常。

1 个答案:

答案 0 :(得分:2)

Microsoft的Oracle ODBC驱动程序的年龄为deprecated

  

完全支持Oracle 7.3x; Oracle8的支持有限。适用于Oracle的ODBC驱动程序不支持任何新的Oracle8数据类型 - Unicode数据类型, BLOB,CLOB等 - 它也不支持Oracle的新关系对象模型。

使用Oracle的ODBC驱动程序或OLE-DB提供程序,您可以从Oracle Data Access Components (ODAC) for Windows Downloads

下载

然后连接字符串必须类似于:

' ODBC Driver from Oracle
strCon = "Driver={Oracle in OraClient11g_home1};DBQ=" & strServer & ";Pwd=" & strPwd & ";Uid=" & strUid     

' OLE DB Provider from Oracle
strCon = "Provider=OraOLEDB.Oracle;Data Source=" & strServer & ";Password=" & strPwd & ";User ID=" & strUid