CFDUMP与CFQUERY和CFSTOREDPROC不同

时间:2015-11-19 15:14:35

标签: coldfusion

问题:

我有一个我用2种方式调用的sproc(cfquery和cfstoredproc),然后转储结果集。我在两种情况下都传递了相同的参数,并且sproc为此测试返回了一个简单的硬编码结果。当我转储结果时, 我可以在cfquery调用中看到实际的查询SQL,但在cfstoredproc调用中却看不到。为什么?我想使用cfstoredproc版本,但希望能够像在CFQUERY中一样获取转储的SQL属性。

(是的,我知道CF准备声明的方式有些不同,我想知道究竟是什么。)

CF代码:

<cfstoredproc datasource="tc" procedure="sp_dumptest" >
    <cfprocparam type="in" dbvarname="@arg1" cfsqltype="CF_SQL_VARCHAR" value="1"  >
    <!--- Out variable --->
    <cfprocresult name="out1">
</cfstoredproc>
<cfdump var="#out1#" label="with cfstoredproc">

<cfquery name="out2" datasource="tc" >
{call sp_dumptest (1) }
</cfquery>
<cfdump var="#out2#" label="with cfquery">

输出:

enter image description here

(在Adam回答之后编辑)

我尝试添加结果属性和fetchclientInfo,但它仍然不会给出实际的SQL。这是我转储RESULT变量时转储的内容。

<cfstoredproc   datasource="Timecurrent" 
                procedure="sp_dumptest" 
                result="rsx" 
                debug="true" 
                fetchClientInfo="yes">
    <cfprocparam type="in" dbvarname="@arg1" cfsqltype="CF_SQL_VARCHAR" value="1"  >
    <!--- Out variable --->
    <cfprocresult name="out1">
</cfstoredproc>
<cfdump var="#rsx#" label="with cfstoredproc">

enter image description here

环境:

  • Coldfusion 11,0,05,293506
  • SQL Server 2014

1 个答案:

答案 0 :(得分:1)

戴夫说:你把苹果与橘子比较。

在第一个示例中,您只是转出proc返回的out param的值。你只希望在那里看到价值。

在第二个示例中,您将转储整个<cfquery>调用的结果,其中包括结果,以及传递给JDBC的SQL语句和参数以及各种其他位和bob。

如果您为<cfstoredproc>调用result属性并转储that,会发生什么情况?您不应该期望看到相同的类型的元数据 - 它仍然是苹果和橙子 - 但它更可能有更多的细节。