Dee*_*dhy 7 coldfusion cfquery coldfusion-9
今天在修复一些现有代码中的错误时,我发现了一个奇怪的错误.
分支目标偏移量太大
搜索后我发现它与Java字节码转换有关.以下是我发现的链接:
在我的情况下,cftransaction包含大约870个语句,它工作正常.但我需要在此事务中再添加2个查询.现在,当我在cftransaction中添加一行代码时,我收到此错误.目前我无法将任何现有的cfquery移出cftransaction.
以下是代码的整体结构:
<cftransaction action="begin">
<cfif URL.action eq 'add'>
Around 200 lines of queries/statements
<cfelseif URL.action eq 'edit'>
Around 200 lines of queries/statements
</cfif>
<cfif URL.action eq 'add' or URL.action 'edit'>
Around 450 lines of queries/statements
</cfif>
</cftransaction>
Run Code Online (Sandbox Code Playgroud)
有没有解决此问题的解决方法?
分支偏移量与模块/函数的大小有关。它也可能是由于cfif/cfelseor的较大条件代码块引起的cfswitch。
从技术上讲,我不确定数量是否有上限。您可以将查询放入cftransaciton块内。它与从 CF8 到 CF9 的代码迁移无关,而是与条件块内代码的长度有关。
我想拆分函数并尝试将每个大尺寸的条件块作为单独的函数放入 cfc 中:
<cffunction name="myFunc1">
<cftransaction action="begin">
<cfif URL.action eq 'add'>
<!--- function call with your xxx lines of queries/statements --->
<cfinvoke component="MyCfc" method="firstQueryBlock" result="result1">
<cfelseif URL.action eq 'edit'>
<!--- second function call with your yyy lines of queries/statements --->
<cfinvoke component="MyCfc" method="secondQueryBlock" result="result2">
</cfif>
<cfif URL.action eq 'add' or URL.action 'edit'>
<!--- third function call with your zzz lines of queries/statements --->
<cfinvoke component="MyCfc" method="thirdQueryBlock" result="result3">
</cfif>
</cftransaction>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |