在Coldfusion中执行SQL函数

时间:2012-05-04 18:28:51

标签: sql function coldfusion

我在MS SQL(2005)中有一个用户定义的函数,我希望通过Coldfusion(8)执行。 知道如何才能让它发挥作用吗?

[这不是存储过程,因此cfstoredproc已经出局]。

提前谢谢。

1 个答案:

答案 0 :(得分:14)

您可以在常规CFQUERY块中调用SQL UDF,假设您的Coldfusion数据源对所需的UDF具有适当的EXECUTE权限。您不必在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)