cfprocparam 正在抛出 ILLEGAL SYMBOL =;

cfprocparam is throwing ILLEGAL SYMBOL =;

从 CF10 升级到 CF11 更新 5(带有修补程序 hf1100-3971083.jar) 数据库 (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 中运行良好....

"qry" 正在返回 "id"

的值
<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>

无论是否打开 'debugging'(根据修补程序 hf1100-3971083.jar),都会发生这种情况

似乎还有其他人声称存在 cfprocparam 问题 - 但这些问题的解决方案并未解决此问题。

有什么想法吗?

经过几天尝试人们的多种建议。 我删除了 "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>

这没有错误。我不能说我 喜欢 解决方案。但是哦,好吧。 另一个可能有效的解决方案是使用

<cfquery...>
    call 'procName' ( arg => value, arg2 => val2 );
</cfquery>

然而,这是遗留代码,希望不会再存在一年以上(...希望...)。所以我不会为此烦恼。