cfprocparam正在抛出ILLEGAL SYMBOL =;

时间:2015-05-14 17:53:26

标签: coldfusion-11

从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问题 - 但这些问题的解决方案并没有解决这个问题。

任何想法?

1 个答案:

答案 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>

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