我的 MS SQL(2005) 中有一个用户定义的函数,我想通过 Coldfusion (8) 执行该函数。知道我怎样才能让它工作吗?
[它不是一个存储过程,所以 cfstoredproc 出来了] 。
先感谢您。
我的 MS SQL(2005) 中有一个用户定义的函数,我想通过 Coldfusion (8) 执行该函数。知道我怎样才能让它工作吗?
[它不是一个存储过程,所以 cfstoredproc 出来了] 。
先感谢您。
您可以直接在常规 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)