ColdFusion 11で新しく追加されたQueryExecute関数は、従来の<cfquery>タグ・<cfqueryparam>タグを関数で呼び出せることのできる新しい機能です。<cfscript>によるスクリプト式でコーディングを行われている方には待望の機能だと思います。
QueryExecute関数については、下記のマニュアルをご参照ください
https://wikidocs.adobe.com/wiki/display/coldfusionjp/QueryExecute
通常のColdFusion関数と同じ使用方法です。引数は、上記ページに記載されているように 「"SQL文", "クエリパラメータ(例:bind変数の値)","cfqueryタグの属性(例:datasource, result)"」となります。もっともシンプルな例を下記に紹介します。
<cfprocessingdirective pageencoding="UTF-8" /> <cfscript> qEmp=QueryExecute("SELECT * FROM Employee","",{result="stResults", datasource="cfdocexamples"}); writeDump(qEmp); writeDump(stResults); </cfscript>
※作成する.cfmファイルの文字コードを UTF-8 以外にする場合は、一行目の<cfprocessingdirective>タグのpageencodingの文字コードも変更下さい。
※上記のdatasource="cfdocexamples"は、ColdFusion Splendorのインストールフォルダ内の/cfusion/db/ の Apache Derbyデータベース(cfdocexamplesフォルダ)です。ベータ版ではデータソース登録がされていない模様ですので、手動でデータベースを登録して下さい(ドライバの選択は「Apache Derby Embedded」で、データベースの作成は「チェックを入れない」状態で登録します)。
3番目の引数は構造体{}で値を指定しています。サンプルの実行結果(qEmpの値)と実行されたSQL情報等(stResultsの値)は下記の通りです。
2番目の引数には、構造体、または、配列で値を指定します。配列[]で値を指定した例は、下記の通りです。
<cfprocessingdirective pageencoding="UTF-8" /> <cfscript> qEmp=QueryExecute("SELECT * FROM Employee where DEPT_ID=? AND EMP_ID=?",[1,1],{result="stResults", datasource="cfdocexamples"}); writeDump(qEmp); writeDump(stResults); </cfscript>
上記のサンプルの実行結果(qEmpの値)と実行されたSQL情報等(stResultsの値)は下記の通りです。
以下のようにクエリのbind変数を指定することもできます。
<cfprocessingdirective pageencoding="UTF-8" /> <cfscript> qEmp=QueryExecute("SELECT * FROM Employee where DEPT_ID=:deptid AND EMP_ID=:empid",{deptid={cfsqltype="CF_SQL_INTEGER",value="1"},empid=7},{datasource="cfdocexamples"}); writeDump(qEmp); </cfscript>
cfqueryparamタグのlist属性を使用した例の場合は、下記のようにQueryExecute関数を指定します。
<cfprocessingdirective pageencoding="UTF-8" /> <cfscript> qEmp=QueryExecute("SELECT * FROM Employee WHERE FIRSTNAME in (:fname)",{fname={value:'Jones,John',cfsqltype='CF_SQL_VARCHAR',list=true}},{datasource="cfdocexamples"}); writeDump(qEmp); </cfscript>
記事公開日:2014年03月05日
最終更新日:2014年04月30日
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.
Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.