从CF10升级到CF11更新5(使用修补程序hf1100-3971083.jar) DB(DB2 v10.2)
在调用存储过程的代码上出错。
Error Executing Database Query.
[Macromedia][DB2 JDBC Driver][DB2]ILLEGAL SYMBOL =;
The error occurred in ...: line 238
236 : <cfstoredproc datasource="#application.dsn#" procedure="LIVE.SP" >
237 : <cfprocparam type="In" cfsqltype="CF_SQL_BIGINT" dbvarname="STOPID" null="yes" />
238 : <cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="POID" null="no" value="#val( qry.id )#" />
239 : </cfstoredproc>
实际代码看起来像这样 - 并且在CF10中工作正常....
&#34; QRY&#34; IS返回&#34; id&#34;
的值<cfloop query="qry" >
<cfstoredproc datasource="#application.dsn#" procedure="LIVE.SP" >
<cfprocparam type="In" cfsqltype="CF_SQL_BIGINT" dbvarname="STOPID" null="yes" />
<cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="POID" null="no" value="#val( qry.id )#" />
</cfstoredproc>
</cfloop>
这种情况发生在IF或非调试&#39;已打开(每个修补程序hf1100-3971083.jar)
似乎有其他人主张cfprocparam问题 - 但这些问题的解决方案并没有解决这个问题。
任何想法?
答案 0 :(得分:1)
经过几天的尝试,人们提出了多项建议。 我删除了“dbvarname”参数,确保我的参数是与过程的序数匹配,这让我超越了错误。
<cfstoredproc datasource="#application.dsn#" procedure="LIVE.SP" >
<cfprocparam type="In" cfsqltype="CF_SQL_BIGINT" null="yes" />
<cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" null="no" value="#val( qry.id )#" />
</cfstoredproc>
这没有错误。我不能说我 LIKE 解决方案。但是哦。 另一种可能有用的解决方案是使用
<cfquery...>
call 'procName' ( arg => value, arg2 => val2 );
</cfquery>
然而,这是遗留代码,希望不会存在超过一年( ...希望...... )。所以我不会为此烦恼。