3

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

谢谢

4

2 回答 2

2

我认为您可以放心地省略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>
于 2011-07-27T02:23:04.423 回答
1

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 变量不存在没有使用内存,但是结果集呢?所以我猜如果你运行任何你实际上不需要从它返回信息的查询[除了选择之外的任何东西?]你可以通过使用结果属性获得你需要的所有信息,并且可能节省一些内存和执行时间?

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

-肖恩

于 2011-07-27T00:31:35.427 回答