问题:
我有一个我用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">
输出:
(在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">
环境:
答案 0 :(得分:1)
戴夫说:你把苹果与橘子比较。
在第一个示例中,您只是转出proc返回的out
param的值。你只希望在那里看到价值。
在第二个示例中,您将转储整个<cfquery>
调用的结果,其中包括结果,以及传递给JDBC的SQL语句和参数以及各种其他位和bob。
如果您为<cfstoredproc>
调用result
属性并转储that
,会发生什么情况?您不应该期望看到相同的类型的元数据 - 它仍然是苹果和橙子 - 但它更可能有更多的细节。