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>
然而,这是遗留代码,希望不会再存在一年以上(...希望...)。所以我不会为此烦恼。
从 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>
然而,这是遗留代码,希望不会再存在一年以上(...希望...)。所以我不会为此烦恼。