【问题标题】:cfquery name attribute, optional?cfquery 名称属性,可选?
【发布时间】:2011-07-27 00:25:26
【问题描述】:

cfquery 的 name 属性是可选的吗?文档说这是必需的,但即使没有它,我的代码似乎也能正常运行。如果未定义,是否有默认值?如果是这样,我应该本地化它还是安全地忽略它?

谢谢

【问题讨论】:

    标签: coldfusion cfquery


    【解决方案1】:

    我认为您可以放心地省略name。它似乎没有将默认 name 添加到变量或本地范围。

    但是,我确实在 CF9 下发现了一些奇怪的东西。如果您不在result 的本地范围内,则将密钥cfquery.executiontime 添加到variables 范围内。这是禁用所有调试(除非我错过了什么)。

    Results:
    Before  Variables = 1 Local = 1
    After   Variables = 2 Local = 1   (result NOT local scoped)
    
    
    <cffunction name="myFunction" output="true">
        <b>Before</b>
        Variables = #structCount(variables)#
        Local = #structCount(local)#<br />
    
        <cfquery datasource="MyDatasource">
            SELECT getDate() AS TestDate
        </cfquery>
    
        <b>After</b>
        Variables = #structCount(variables)#
        Local = #structCount(local)#<br />
    </cffunction>
    

    【讨论】:

    • 我想我几年前就此事联系了 Adob​​e,他们说这很正常,出于向后兼容性的原因,它就这样保留了。
    • 哦,是的。我看到了向后兼容性。它显然已经存在了一段时间。不过我还是不喜欢,感觉不对;)cfgears.com/index.cfm/2010/3/29/…
    【解决方案2】:

    name 属性是必需的,但我刚刚对其进行了测试,如果缺少 name 属性,它不会抛出错误......多么有趣。但是,如果没有 name 属性 - 你将如何获得结果集?

    多么有趣的问题。

    更新

    刚刚进行了快速测试并进行了一些谷歌搜索:

    <cfquery  datasource="#dsn#" result="qresult">
    select some_stuff from that_table limit a_bunch
    </cfquery>
    
    <cfdump var="#qresult#" />
    

    转储结果属性清楚地表明查询已经运行并且确实获得了结果集 - 尽管似乎无法访问它。 谷歌搜索和文档对默认值或范围没有帮助..也许 ping 这些人:http://www.bennadel.com/ - 我在他们的网站上遇到了很多“实验”。

    现在文档确实说 name 属性是必需的,但我想我可以看到可能不需要它的情况 - 显然没有 name 变量不使用内存,但是结果集呢?所以我猜如果你运行任何你实际上不需要从它返回信息的查询[除了选择之外的任何东西?]你可以通过使用结果属性获得你需要的所有信息,并且可能节省一些内存和执行时间?

    这不是一个有趣的想法吗?

    -肖恩

    【讨论】:

    • 我见过不返回结果集(INSERT/UPDATE/DELETE)的查询没有 NAME 属性。我认为它不一定会节省任何内存,但确实可以节省打字:)
    • 如果它确实节省了内存,那将是微不足道的,但我想这取决于你的应用程序的负载是否对你有好处......事实上,我只是不知道..
    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多