cfquery的name属性是可选的吗?该文档称这是必需的,但即使没有它,我的代码似乎运行良好。如果没有定义,是否有默认值?如果是这样,我应该对其进行局部变更或安全地忽略它吗?
THX
答案 0 :(得分: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>
答案 1 :(得分:1)
名称属性是必需的,但我刚测试了它&amp;如果缺少name属性,它不会抛出错误...非常有趣。但是,如果没有name属性 - 你将如何获得结果集?
这是一个多么有趣的问题。
<强>更新强>
刚刚进行了快速测试并进行了一些谷歌搜索:
<cfquery datasource="#dsn#" result="qresult">
select some_stuff from that_table limit a_bunch
</cfquery>
<cfdump var="#qresult#" />
转储结果属性清楚地表明查询已运行并且确实获得了结果集 - 尽管似乎无法访问它。 谷歌搜索&amp;文档对默认值或范围没有帮助。也许ping这些人:http://www.bennadel.com/ - 我在他们的网站上遇到了很多“试验”。
现在文档确实说name属性是必需的,但我想我可以看到可能没有必要的情况 - 很明显,name变量不使用内存,但结果集怎么样?所以我猜你是否运行任何查询,你实际上不需要从它那里获取信息[除了选择之外什么?]你可以通过使用结果属性获得所需的所有信息并且MAYBE可以节省一些内存和执行时间吗?
这不是一个有趣的想法吗?
-Sean