방법: 공용 언어 런타임 통합을 사용하여 SQL Server 사용자 정의 함수 만들기 및 실행

사용자 정의 함수를 SQL Server CLR(공용 언어 런타임) 데이터베이스 프로젝트에 추가하여 SQL 사용자 정의 함수를 만듭니다. 배포된 후에는 사용자 정의 함수를 호출하고 실행할 수 있습니다.

참고

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

SQL Server 사용자 정의 함수 만들기

Visual Studio를 사용하여 이 함수를 빌드하고 배포하려면

  1. 기존의 SQL CLR 데이터베이스 프로젝트를 열거나 새 프로젝트를 만듭니다. 자세한 내용은 방법: SQL Server 공용 언어 런타임 통합을 사용하는 데이터베이스 개체의 프로젝트 만들기을 참조하십시오.

  2. 프로젝트 메뉴에서 새 항목 추가를 선택합니다.

  3. 새 항목 추가 대화 상자에서 사용자 정의 함수를 선택합니다.

  4. 새 사용자 정의 함수의 이름을 입력합니다.

  5. 사용자 정의 함수가 실행될 경우 실행할 코드를 추가합니다. 이 절차 다음에 나오는 첫 번째 예제를 참조하십시오.

  6. 솔루션 탐색기에서 TestScripts 폴더를 열고 Test.sql 파일을 두 번 클릭하여 편집할 수 있도록 엽니다. 사용자 정의 함수를 실행하는 코드를 추가합니다. 이 절차 다음에 나오는 두 번째 예제를 참조하십시오.

    참고

    다른 스크립트를 기본 디버그 스크립트로 지정할 수 있습니다. 자세한 내용은 방법: Test.sql 스크립트를 편집하여 SQL Server 공용 언어 런타임 통합을 사용하는 개체 실행을 참조하십시오.

  7. 사용자 정의 함수를 SQL Server에 배포합니다. 자세한 내용은 방법: SQL Server에 SQL CLR 데이터베이스 프로젝트 항목 배포을 참조하십시오.

    중요

    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 공용 언어 런타임 통합을 사용하는 데이터베이스 개체의 프로젝트 만들기을 참조하십시오.

  8. F5 키를 눌러 사용자 정의 함수를 SQL Server에서 실행하여 디버깅합니다.

설명

다음 코드 예제에서는 가격을 매개 변수로 받아들여 판매세를 더한 다음 가격과 판매세를 합한 금액을 반환하는 addTax라는 사용자 정의 스칼라 함수를 만듭니다.

함수를 만든 후에는 SQL Server에 배포합니다. 자세한 내용은 방법: SQL Server에 SQL CLR 데이터베이스 프로젝트 항목 배포를 참조하십시오.

코드

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 사용자 정의 형식 만들기 및 실행

연습: 관리 코드로 저장 프로시저 만들기

방법: SQL CLR 저장 프로시저 디버깅

참조

SQL CLR 데이터베이스 프로젝트 및 데이터베이스 개체의 특성

개념

SQL Server CLR 통합 소개(ADO.NET)

관리 코드를 사용하여 데이터베이스 개체를 만드는 경우의 이점

관리 코드로 SQL Server 개체 만들기

기타 리소스

SQL CLR Database Debugging