我有几个SQL Server 2008存储过程.我通过cfstoredproc调用它们.在4月17日运行CF服务器更新后,CF不再获得结果.这是其中一个电话:
<cfstoredproc procedure="proc_xxxx" datasource="#application.dsn#" debug="yes" returnCode="yes">
<cfprocparam type="in" cfsqltype="cf_sql_integer" dbvarname="@myID" value="#arguments.myID#">
<cfprocparam type="in" cfsqltype="cf_sql_varchar" dbvarname="@EmailAddr" value="#trim(arguments.emailAddress)#" null="#not len(arguments.emailAddress)#">
<cfprocparam type="out" cfsqltype="cf_sql_integer" dbVarName="@NewUserID" variable="newUserID" >
<cfprocresult name="qryUser">
</cfstoredproc>
<cfoutput>newUserID = #newUserID#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我得到一个newUserID未定义的错误.同样,在更新5之前,所有东西都运行良好.
如果我在SSMS中调用存储过程,一切正常.cfstoredproc工作正如我在数据库中看到我的更新和插入.但是,它根本不会再返回任何结果.返回代码为0,正如我所提到的,一切运行没有任何错误.
我试过了 :
<cfprocresult resultset="1" name="qryResult">
Run Code Online (Sandbox Code Playgroud)
没有运气.有任何想法吗?提前致谢.
当我执行存储过程通过时cfstoredproc,我得到的结果不同于调用存储过程通过cfquery.我正在向每个调用传递相同的确切参数值.而且,当我在SQL Studio中运行存储过程时,我得到了正确的结果(与cfquery相同).
这是cfstoredproc电话
<cfstoredproc datasource="#request.mainDSN#" debug="#request.debug#" procedure="rankingresults">
<cfprocparam type="in" value="8652" CFSQLType="CF_SQL_INTEGER">
<cfprocparam type="in" value="50" CFSQLType="CF_SQL_INTEGER">
<cfprocparam type="in" value="53" CFSQLType="CF_SQL_INTEGER">
<cfprocresult name="local.listing">
</cfstoredproc>
Run Code Online (Sandbox Code Playgroud)
这是cfquery电话
<cfquery datasource="#request.mainDSN#" name="rankings">
EXEC rankingresults
@CityZipId = 8652,
@distance = 50,
@sic = 53
</cfquery>
Run Code Online (Sandbox Code Playgroud)
结果完全不同.它甚至都不是很接近.我已经被我的头撞了几个小时了,我无法弄清楚它为什么要做它正在做的事情.
UPDATE
存储的proc很大(我继承了一个),所以我不打算将它全部粘贴在这里:http://pastebin.com/EtufPWXf
我有一个Oracle程序 - editBacklog,我通过cfstoredproc从CFM页面调用.在对程序进行了几处更改后,我开始获得ORA-06550:第1行第7列:PLS-00306:调用'EDITBACKLOG'时参数的数量或类型错误.我之前得到过这个,发现如果我改变了程序的名称,它就会重新开始工作.我将名称更改为editBacklog2,它按照我的预期工作.我将名称更改回editBacklog并得到了同样的错误.我再次将名称更改回editBacklog2并开始获取ORA-01003:未解析任何语句.此时除了名字外,NOTHING已经改变了.我再次将名称更改为editBacklog3,它按预期工作.
截至目前
editBacklog = ORA-06550
editBacklog2 = ORA-01003
editBacklog3 =工作(有点)
当我试图修复ORA-01821:日期格式无法识别错误时,整个事情就开始了.我担心当我开始改变事物时,我会开始得到上述相同的跛脚行为.
无论是Oracle还是CF都在搞乱我,我最终会因为它而不喜欢其中一个.
我认为它可能是cfstoredproc缓存元数据或东西,但谷歌,liveocs或OTN都没有多少关于我的情况说.
我不是SA或DBA.
有人有主意吗?