2012-05-04 10 views
4

私は、ColdFusion(8)で実行したい私のMS SQL(2005)にユーザー定義関数を持っています。 どのように私はこれを動作させることができますか?ColdfusionでSQL関数を実行

[ストアドプロシージャではないので、cfstoredprocは出力されていません]。

ありがとうございます。

答えて

14

ColdFusionデータソースが目的のUDFに対して適切なEXECUTE権限を持っていると仮定すると、通常のCFQUERYブロックの内部でSQL UDFを呼び出すことができます。 CFQuery内でselect文を返す必要はありません。 Coldfusion変数をデータベースに渡す場合は、CFQUERYPARAMを安全に使用することを忘れないでください。

UDFを呼び出すには、スキーマ*を含める必要があります。私たちの場合、デフォルトスキーマを使用していたので、UDFの接頭辞は "dbo"となります。 dbo.FunctionName()のように。ここで

は一例です:

<!--- We want to convert this numeric category into its English name. 
     Thankfully our database administrator has a simple function to 
     resolve it without extra work on our part. ---> 

<cfset myCategory = 100428> 

<!--- We call this Coldfusion variable using CFQUERYPARAM to prevent SQL Injection ---> 

<cfquery datasource="mydatasource" name="test"> 
    SELECT dbo.CategoryAsString(<cfqueryparam cfsqltype="cf_sql_integer" value="#myCategory#">) AS CategoryString 
</cfquery> 

<!--- And output the result here ---> 
<cfdump var="#test.CategoryString#"> 

*あなたはUDFのスキーマが含まれていない場合は、データベースクエリの実行」エラーになります [Macromedia社] [SQLServerのJDBCドライバ] [SQLServerの]」。 [FUNCTION NAME] 'は認識された組み込み関数名ではありません。 (CF 8)

+0

ありがとう、yupeは魅力のように動作します。 – MadushM

関連する問題