3

cfqueryのname属性はオプションですか?ドキュメントには必須と書かれていますが、コードがなくても正常に動作するようです。定義されていない場合のデフォルト値はありますか?もしそうなら、私はそれをローカル変数にするか、それとも安全に無視しますか?

どうも

4

2 に答える 2

2

安全に省略できると思いますnamename変数またはローカルスコープにデフォルトを追加するようには見えません。

しかし、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変数によって使用されていませんが、結果セットはどうですか?したがって、実際に情報を必要としないクエリを実行すると[選択以外は何ですか?]、result属性を使用して必要なすべての情報を取得でき、メモリと実行時間を節約できる可能性がありますか?

それは楽しい考えではありませんか?

-sean

于 2011-07-27T00:31:35.427 に答える