cfquery 的 name 属性是可选的吗?文档说这是必需的,但即使没有它,我的代码似乎也能正常运行。如果未定义,是否有默认值?如果是这样,我应该本地化它还是安全地忽略它?
谢谢
cfquery 的 name 属性是可选的吗?文档说这是必需的,但即使没有它,我的代码似乎也能正常运行。如果未定义,是否有默认值?如果是这样,我应该本地化它还是安全地忽略它?
谢谢
我认为您可以放心地省略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>
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 变量不存在没有使用内存,但是结果集呢?所以我猜如果你运行任何你实际上不需要从它返回信息的查询[除了选择之外的任何东西?]你可以通过使用结果属性获得你需要的所有信息,并且可能节省一些内存和执行时间?
这不是一个有趣的想法吗?
-肖恩