Share via


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 建置和部署這個函式

  1. 開啟現有的 [SQL CLR 資料庫專案],或建立一個新專案。 如需詳細資訊,請參閱HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案

  2. 在 [專案] 功能表中選取 [加入新項目]。

  3. 在 [加入新項目] 對話方塊中,選取 [使用者定義函式]。

  4. 為新的使用者定義函式輸入 [名稱]。

  5. 加入執行使用者定義函式時執行的程式碼。 請參閱遵循此程序的第一個範例。

  6. 在 [方案總管] 中,開啟 [TestScripts] 資料夾,並按兩下 Test.sql 檔案開啟它,以進行編輯。 加入執行使用者定義函式的程式碼。 請參閱遵循此程序的第二個範例。

    注意事項注意事項

    您可以指定其他指令碼做為預設偵錯指令碼。 如需詳細資訊,請參閱HOW TO:編輯 Test.sql 指令碼以執行使用 SQL Server Common Language Run-time 整合的物件

  7. 將使用者定義函式部署至 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 整合的資料庫物件建立專案

  8. 按 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 使用者定義型別

逐步解說:使用 Managed 程式碼建立預存程序

HOW TO:偵錯 SQL CLR 預存程序

參考

SQL CLR 資料庫專案和資料庫物件的屬性

概念

SQL Server CLR 整合簡介 (ADO.NET)

使用 Managed 程式碼建立資料庫物件的好處

以 Managed 程式碼建立 SQL Server 物件

其他資源

SQL CLR Database Debugging