共用方式為


HOW TO:建立及執行 CLR SQL Server 使用者定義函式

更新:2007 年 11 月

將 [使用者定義函式] 加入至 SQL Server 專案,建立 SQL 使用者定義函式。順利部署之後,即可呼叫和執行此使用者定義函式。

注意事項:

根據預設,Microsoft SQL Server 中的 Common Language Runtime (CLR) 整合功能已關閉,您必須啟用此功能,才能使用 SQL Server 專案項目。若要啟用 CLR 整合,請使用 sp_configure 預存程序的 clr enabled 選項。如需詳細資訊,請參閱啟用 CLR 整合

注意事項:

您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定

建立 SQL Server 使用者定義函式

若要使用 Visual Studio 建置和部署這個函式

  1. 開啟現有的 [SQL Server 專案],或建立一個新專案。如需詳細資訊,請參閱 HOW TO:建立 SQL Server 專案

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

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

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

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

    注意事項:

    C++ 範例必須使用 /clr:safe 編譯器選項進行編譯。

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

    若為 Visual C++,請在 [方案總管] 中,按兩下 [debug.sql] 檔案開啟它,以進行編輯。加入執行使用者定義函式的程式碼。請參閱遵循此程序的第二個範例。

  7. 將使用者定義函式部署至 SQL Server。如需詳細資訊,請參閱 HOW TO:將 SQL Server 專案項目部署至 SQL Server

  8. 按 F5,在 SQL Server 上執行使用者定義函式,以進行偵錯。

描述

下列程式碼範例會建立使用者定義之純量函式 (稱為 addTax),並採用價格做為參數、加入營業稅,以及傳回含稅的價格。

建立函式之後,將它部署至 SQL Server。如需詳細資訊,請參閱 HOW TO:將 SQL Server 專案項目部署至 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;
    }
}
#include "stdafx.h"

#using <System.dll>
#using <System.Data.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Data;
using namespace System::Data::Sql;
using namespace System::Data::SqlTypes;
using namespace Microsoft::SqlServer::Server;

// In order to debug your Aggregate, add the following to your debug.sql file:
//
// SELECT dbo.addTax(10)
//

public ref class UserDefinedFunctions
{
public:
    static initonly double SALES_TAX = 0.086;

    [SqlFunction()]
    static SqlDouble AddTax(SqlDouble originalAmount)
    {
        SqlDouble taxAmount = originalAmount * SALES_TAX;

        return originalAmount + taxAmount;
    }
};

描述

將程式碼加入至專案中 TestScripts 資料夾的 Test.sql (在 Visual C++ 中為 debug.sql) 檔案,以測試使用者定義函式。例如,若要測試這個函式,請使用查詢,例如 "SELECT dbo.addTax(10)"。您應該會看到傳回值 "10.86"。

程式碼

SELECT dbo.addTax(10)

請參閱

工作

HOW TO:建立 SQL Server 專案

HOW TO:建立及執行 CLR SQL Server 預存程序

HOW TO:建立及執行 CLR SQL Server 觸發程序

HOW TO:建立及執行 CLR SQL Server 彙總

HOW TO:建立及執行 CLR SQL Server 使用者定義函式

HOW TO:建立及執行 CLR SQL Server 使用者定義型別

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

HOW TO:偵錯 SQL CLR 預存程序

概念

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

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

SQL Server 專案的項目範本

參考

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

其他資源

SQL CLR 資料庫偵錯