開発部だより 第138回
こんにちは!
正月太り解消の為、最近の夕飯は野菜スープオンリーのijです。
今回は、ColdFusion 9 で追加されたスクリプト関数を使用して
CFScriptでcfqueryタグに相当する機能を利用する方法をご紹介します。
通常、CFScriptではcfqueryに限らずCFMLタグは使用できません。
以下はエラーになります。
[例]cfscript内にcfqueryを記述
<cfscript>
<cfquery name="qUser" datasource="satt">
SELECT
last_name,
first_name
FROM
user_master
</cfquery>
</cfscript>
CFScriptでcfqueryタグの機能を利用する場合、
ColdFusion 8 までは、ユーザー側でcfqueryの結果を返す関数を定義、cfqueryの結果を返す関数をCFC(ColdFusionコンポーネント)に定義、等を行う必要がありました。
[例]cfqueryの結果を返す関数を定義
<cffunction name="getUser" access="public" returntype="query">
<cfscript>
var qUser = QueryNew("");
</cfscript>
<cfquery name="qUser" datasource="satt">
SELECT
last_name,
first_name
FROM
user_master
</cfquery>
<cfreturn qUser />
</cffunction>
<cfscript>
//関数から結果を取得
qUser = getUser();
</cfscript>
[例]cfqueryの結果を返す関数をCFCに定義
User.cfc:
<cfcomponent>
<cffunction name="getUser" access="public" returntype="query">
<cfscript>
var qUser = QueryNew("");
</cfscript>
<cfquery name="qUser" datasource="satt">
SELECT
last_name,
first_name
FROM
user_master
</cfquery>
<cfreturn qUser />
</cffunction>
</cfcomponent>
<cfscript>
//CFCに定義された関数から結果を取得
user = CreateObject("component","User");
qUser = user.getUser();
</cfscript>
ColdFusion 9 からはCFScriptでcfqueryタグに相当する機能を利用できるように、
queryという関数がColdFusionの機能として定義されています。
[例]ColdFusion 9から追加されたquery関数を使用
<cfscript>
//サービスを作成
user = new query();
user.setDatasource("satt");//データソース
user.setName("qUser");//クエリ名
result = user.execute(sql="SELECT last_name, first_name FROM user_master");//SQLを実行
qUser = result.getResult();//結果を取得
</cfscript>
またCFC(ColdFusionコンポーネント)として実装されていますので、以下のようにCreateObjectでサービスを作成し、利用することも出来ます。
<cfscript>
//CreateObjectでサービスを作成
user = CreateObject("component","query");
user.setDatasource("satt");//データソース
user.setName("qUser");//クエリ名
result = user.execute(sql="SELECT last_name, first_name FROM user_master"); //SQLを実行
qUser = result.getResult();//結果を取得
</cfscript>
ColdFusion 9 ではユーザー側で別途関数を定義する必要も無く、すっきり記述出来る事がおわかりいただけたと思います。
また、今回ご紹介したquery関数の他にも、cfmail、cfpdf等のタグに相当する機能をCFScriptで利用できるスクリプト関数が追加されていますのでご興味のある方はお試しいただければと思います。
Adobe ColdFusion 9 ヘルプ:CFC として実装されるスクリプト関数
それでは、また!