我们可以在cftransaction中编写数字查询/语句是否有任何限制?

时间:2015-06-24 11:08:04

标签: coldfusion coldfusion-9 cfquery

今天在修复现有代码中的错误时,我发现了一个奇怪的错误。

  

分支目标偏移量太大而不能

搜索后我发现它与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>

是否有解决此问题的解决方法?

1 个答案:

答案 0 :(得分:2)

分支偏移量与模块/功能的大小有关。它也可能是由cfif/cfelsecfswitch的大条件代码块引起的。

从技术上讲,我不确定是否有任何上限。可以放在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>