cfquery的name属性是否可选?医生说这是必需的,但我的代码似乎运行良好,即使没有它。如果没有定义,是否存在默认值?如果是的话,我应该局部改变它还是安全地忽略它?
Thx
我认为您可以安全地省略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#" />
转储result属性清楚地表明查询已经运行并且确实获得了结果集——尽管似乎没有办法访问它。谷歌,文档对默认值或范围没有帮助。也许ping这些家伙:http://www.bennadel.com/-我在他们的网站上遇到了很多"实验"。
现在文档确实说name属性是必需的,但我想我可以看到它可能不是必要的情况-显然内存不被name变量使用,但是结果集呢?所以我猜如果你运行任何查询,你实际上不需要信息从它返回[任何东西,但一个选择?你可以得到所有的信息,你需要使用的结果属性,也许节省一些内存和执行时间?
这不是一个有趣的想法吗?
肖恩