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

标签 coldfusion coldfusion-9 cfquery

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

Branch target offset too large for short



搜索后发现与Java字节码转换有关。以下是我找到的链接:
  • Branch target offset too large for short
  • Branch Target Offset Error
  • Why does a long cfc file work in CF8, but not CF9? Getting "Branch target offset too large for short" error

  • 就我而言,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>
    

    有什么办法可以解决这个问题吗?

    最佳答案

    分支偏移与模块/功能的大小有关。也可能是由于 cfif/cfelse 的大条件代码块造成的。或 cfswitch .

    从技术上讲,我不确定是否有任何上限。您可以在 cftransaciton 中输入的查询堵塞。它与从 CF8 到 CF9 的代码迁移无关,而是与条件 block 内代码的长度有关。

    我想拆分函数并尝试将每个大型条件 block 作为单独的函数放入 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>
    

    关于coldfusion - 我们可以在 cftransaction 中编写的数量查询/语句是否有任何限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31024940/

    相关文章:

    javascript - 表单提交给自身后如何处理jQuery错误

    coldfusion - 是否可以在应用程序之间共享 CFC?

    file-upload - 为什么我不能将上传的文件附加到电子邮件中?

    coldfusion - 了解 ColdFusion FindNoCase

    coldfusion - 在数据库中插入数据时处理空值

    coldfusion - 使用多个 cfqueryparam 时 cfquery 不返回结果

    iis - 冷聚变 2016 : Can you have a folder in your web root named 'api' or 'rest' ?

    ColdFusion 包括

    jquery - 如何通过 ColdFusion CFC 访问返回到 jQuery 的 JSON 结构?

    mysql - Coldfusion MYSQL 日期查询参数不返回结果