如何:通过使用公共语言运行时集成创建和运行 SQL Server 用户定义的函数
通过将**“用户定义的函数”**添加到 SQL Server 公共语言运行时 (SQL CLR) 数据库项目,从而创建 SQL 用户定义的函数。 部署成功后,可调用并执行用户定义的函数。
提示
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。
创建用户定义的 SQL Server 函数
使用 Visual Studio 建立和部署此函数
打开一个现有的**“SQL CLR 数据库项目”**,或者创建一个新项目。 有关更多信息,请参见如何:为使用 SQL Server 公共语言运行时集成的数据库对象创建项目。
在**“项目”菜单上选择“添加新项”**。
在**“添加新项”对话框中,选择“用户定义的函数”**。
键入新用户定义函数的**“名称”**。
添加执行用户定义函数时运行的代码。 请参见此过程后面的第一个示例。
在**“解决方案资源管理器”中,打开“TestScripts”**文件夹,并双击 Test.sql 文件,以打开它进行编辑。 添加执行您的用户定义函数的代码。 请参见此过程后面的第二个示例。
提示
您可以将其他脚本指定为默认调试脚本。 有关更多信息,请参见如何:编辑 Test.sql 脚本以运行使用 SQL Server 公共语言运行时集成的对象。
将用户定义函数部署到 SQL Server。 有关更多信息,请参见如何:将 SQL CLR 数据库项目项部署到 SQL Server。
重要事项 SQL Server 2005 和 SQL Server 2008 只支持使用 .NET Framework 2.0、3.0 或 3.5 版生成的 SQL Server 项目。 如果您尝试将 SQL Server 项目部署到 SQL Server 2005 或 SQL Server 2008,将出现错误:Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(其中,AssemblyName 是正在部署的程序集的名称)。 有关更多信息,请参见如何:为使用 SQL Server 公共语言运行时集成的数据库对象创建项目。
按 F5 通过在 SQL Server 上执行用户定义的函数来对其进行调试。
说明
下面的代码示例创建用户定义的将价格作为参数的标量函数 addTax,添加销售税并返回价格和销售税的加和。
创建该函数后,将其部署到 SQL Server。 有关更多信息,请参见如何:将 SQL CLR 数据库项目项部署到 SQL Server
代码
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Partial Public Class UserDefinedFunctions
Public Const SALES_TAX As Double = 0.086
<SqlFunction()>
Public Shared Function addTax(ByVal originalAmount As SqlDouble) As SqlDouble
Dim taxAmount As SqlDouble = originalAmount * SALES_TAX
Return originalAmount + taxAmount
End Function
End Class
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
public const double SALES_TAX = .086;
[SqlFunction()]
public static SqlDouble addTax(SqlDouble originalAmount)
{
SqlDouble taxAmount = originalAmount * SALES_TAX;
return originalAmount + taxAmount;
}
}
说明
向位于项目的 TestScripts 文件夹中的 Test.sql 文件添加代码以测试用户定义的函数。 例如,若要测试此函数,请使用查询,如“SELECT dbo.addTax(10)”。 您应见到返回的值“10.86”。
代码
SELECT dbo.addTax(10)
请参见
任务
如何:为使用 SQL Server 公共语言运行时集成的数据库对象创建项目
如何:通过使用公共语言运行时集成创建和运行 SQL Server 存储过程
如何:通过使用公共语言运行时集成创建和运行 SQL Server 触发器
如何:通过使用公共语言运行时集成创建和运行 SQL Server 聚合
如何:通过使用公共语言运行时集成创建和运行 SQL Server 用户定义的类型