HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 使用者定義函式
將 [使用者定義函式] 加入至 SQL Server Common Language Runtime (SQL CLR) 資料庫專案,建立 SQL 使用者定義函式。 順利部署之後,即可呼叫和執行此使用者定義函式。
![]() |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 Visual Studio 設定。 |
建立 SQL Server 使用者定義函式
若要使用 Visual Studio 建置和部署這個函式
開啟現有的 [SQL CLR 資料庫專案],或建立一個新專案。 如需詳細資訊,請參閱HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案。
在 [專案] 功能表中選取 [加入新項目]。
在 [加入新項目] 對話方塊中,選取 [使用者定義函式]。
為新的使用者定義函式輸入 [名稱]。
加入執行使用者定義函式時執行的程式碼。 請參閱遵循此程序的第一個範例。
在 [方案總管] 中,開啟 [TestScripts] 資料夾,並按兩下 Test.sql 檔案開啟它,以進行編輯。 加入執行使用者定義函式的程式碼。 請參閱遵循此程序的第二個範例。
注意事項
您可以指定其他指令碼做為預設偵錯指令碼。 如需詳細資訊,請參閱HOW TO:編輯 Test.sql 指令碼以執行使用 SQL Server Common Language Run-time 整合的物件。
將使用者定義函式部署至 SQL Server。 如需詳細資訊,請參閱HOW TO:將 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 是您所部署之組件的名稱)。 如需詳細資訊,請參閱HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案。
按 F5,在 SQL Server 上執行使用者定義函式,以進行偵錯。
說明
下列程式碼範例會建立使用者定義之純量函式 (稱為 addTax),並採用價格做為參數、加入營業稅,以及傳回含稅的價格。
建立函式之後,將它部署至 SQL Server。 如需詳細資訊,請參閱 HOW TO:將 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)
請參閱
工作
HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 預存程序
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 觸發程序
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 彙總
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 使用者定義型別