5

我的 MS SQL(2005) 中有一个用户定义的函数,我想通过 Coldfusion (8) 执行该函数。知道我怎样才能让它工作吗?

[它不是一个存储过程,所以 cfstoredproc 出来了] 。

先感谢您。

4

1 回答 1

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)

于 2012-05-04T18:35:50.147 回答