【发布时间】:2012-06-15 15:17:23
【问题描述】:
我正在尝试从我们的 Oracle 数据库中检索 CLOB 数据。代码如下:
<cfstoredproc datasource="#request.site.datasource#" procedure="GETPAGESWITHMETADATA" result="myResults">
<cfprocparam cfsqltype="CF_SQL_VARCHAR" type="in" value="News">
<cfprocparam cfsqltype="CF_SQL_VARCHAR" type="in" value="News Pages">
<cfprocparam cfsqltype="CF_SQL_CLOB" type="out" variable="XML">
<cfprocresult name="rs1">
</cfstoredproc>
<cfdump var="#myResults#">
<cfoutput>#XML#</cfoutput>
<cfcatch type="any">
<cfdump var="#cfcatch#">
</cfcatch>
</cftry>
存储过程的输出基本上是:
select dbms_xmlquery.getxml(queryCtx) INTO XML from dual;
我检查了服务器上的数据源和“启用长文本检索 (CLOB)”。为每个数据源检查选项。
令人惊讶的是,我没有在屏幕上显示 XML 结果,而是得到了一个非常短的字符串: [C@74897f5e
它看起来像句柄 ID,而不是内容本身。
如何检索 XML 的完整内容?
作为参考,数据源正在使用具有 TNS 名称的宏媒体驱动程序: 驱动类:macromedia.jdbc.MacromediaDriver
【问题讨论】:
-
只是检查 - 您应该在 "OUT" var 中将这个 var 写成 "XML" 对吗?试着把它放在一个数据集中......我运气不好,没有变量让它们正确。我必须调整 SP 本身的顺序等 - 变量名称在 SP 内被忽略
-
我无法使用数据集。这样做的全部目的是返回结构化数据,以避免多次调用数据库。
-
xml是out参数,在sql developer中调用正常
-
我知道这是正确的...而且您不需要多次调用...只需执行一些操作,例如创建表 #blah (xml text) 然后插入 #blah (xml) 。 .. 从#blah 中选择 xml - 以便驱动程序将您的 clob 作为数据集返回...一旦在 CF 中,您可以简单地执行 parseXML(resultname.xml)。
-
@MarkAKruger 你好。它绝对看起来很有趣。你有存储过程的示例代码吗?