다음을 통해 공유


WCF 서비스 모델을 사용하여 SQL Server 스칼라 함수 호출

WCF 서비스 모델을 사용하여 .NET 애플리케이션에서 SQL 어댑터를 사용하여 SQL Server 스칼라 함수를 호출할 수 있습니다. 어댑터는 스칼라 함수를 SQL Server 직접 호출할 수 있는 메서드로 노출합니다. 어댑터가 스칼라 함수를 지원하는 방법에 대한 자세한 내용은 SQL 어댑터를 사용하여 SQL Server 스칼라 함수 실행을 참조하세요.

이 항목에서 WCF 서비스 모델을 사용하여 스칼라 함수 호출을 보여 주는 방법

이 항목에서는 SQL Server 데이터베이스에서 GET_EMP_ID 함수를 호출하는 방법을 보여 줍니다. GET_EMP_ID 함수는 Employee 테이블에서 직원을 지정하고 해당 직원 ID를 반환합니다. GET_EMP_ID 함수와 Employee 테이블은 샘플과 함께 제공되는 SQL 스크립트를 실행하여 만듭니다. 자세한 내용은 어댑터 샘플을 참조하세요.

이 항목에 사용된 예제 정보

이 항목의 예제에서는 Employee 테이블에서 GET_EMP_ID 스칼라 함수를 호출했습니다. GET_EMP_ID 함수와 Employee 테이블은 샘플과 함께 제공되는 SQL 스크립트를 실행하여 만듭니다. 이 항목을 기반으로 하는 샘플 ScalarFunction_ServiceModel SQL 어댑터 샘플도 제공됩니다. 자세한 내용은 어댑터 샘플을 참조하세요.

WCF 클라이언트 클래스

SQL 어댑터를 사용하여 SQL Server 스칼라 함수를 호출하기 위해 생성된 WCF 클라이언트의 이름은 다음 표에 나와 있습니다.

데이터베이스 아티팩트 SQL Server WCF 클라이언트 이름
스칼라 함수 ScalarFunctions_[SCHEMA]Client

[SCHEMA] = SQL Server 아티팩트 컬렉션입니다(예: dbo).

스칼라 함수 호출을 위한 메서드 서명

다음 표에서는 테이블의 기본 작업에 대한 메서드 서명을 보여 줍니다. 뷰 네임스페이스와 이름이 테이블의 네임스페이스를 대체한다는 점을 제외하면 보기의 서명은 동일합니다.

작업 메서드 시그니처
스칼라 함수 이름 public <return_type><scalar_function_name>(param1, param2, ...)

<> retrun_type = 함수 정의에 정의된 반환 형식

<> scalar_function_name = 스칼라 함수의 이름입니다.

예를 들어 다음 코드는 dbo 스키마에서 GET_EMP_ID 스칼라 함수에 대해 생성된 WCF 클라이언트 클래스에 대한 메서드 서명을 보여 줍니다. 이 메서드는 직원 지정을 매개 변수로 사용하고 직원 ID(정수)를 반환합니다.

public partial class ScalarFunctions_dboClient : System.ServiceModel.ClientBase<ScalarFunctions_dbo>, ScalarFunctions_dbo {      
    public System.Nullable<int> GET_EMP_ID(string emp_desig);  
}  

이 코드 조각에서 ScalarFunctions_dboClient 어댑터 서비스 참조 플러그 인 추가에서 생성된 SqlAdapterBindingClient.cs의 WCF 클래스 이름입니다.

스칼라 함수 호출을 위한 매개 변수

스칼라 함수를 호출하기 위해 SQL 어댑터에서 노출하는 메서드에 대한 매개 변수는 SQL Server 스칼라 함수 정의에 정의된 매개 변수와 동일합니다. 예를 들어 GET_EMP_ID 스칼라 함수를 호출하기 위한 매개 변수는 emp_desig 직원의 지정을 받습니다.

다시 말하지만 스칼라 함수의 반환 값은 SQL Server 스칼라 함수 정의에 정의된 반환 값과 동일합니다. 예를 들어 GET_EMP_ID 함수의 반환 값은 정수 형식의 직원 ID입니다.

스칼라 함수를 호출하는 WCF 클라이언트 만들기

WCF 클라이언트를 사용하여 SQL Server 작업을 수행하는 데 필요한 제네릭 작업 집합에는 SQL 어댑터를 사용한 WCF 서비스 모델 개요에 설명된 작업 집합이 포함됩니다. 이 섹션에서는 GET_EMP_ID 스칼라 함수를 호출하는 WCF 클라이언트를 만드는 방법을 설명합니다.

WCF 클라이언트를 만들려면

  1. Visual Studio에서 Visual C# 프로젝트를 만듭니다. 이 항목에서는 콘솔 애플리케이션을 만듭니다.

  2. GET_EMP_ID 스칼라 함수에 대한 WCF 클라이언트 클래스를 생성합니다. WCF 클라이언트 클래스를 생성하는 방법에 대한 자세한 내용은 SQL Server 아티팩트용 WCF 클라이언트 또는 WCF 서비스 계약 생성을 참조하세요.

  3. 솔루션 탐색기 및 Microsoft.ServiceModel.Channels에 대한 참조를 Microsoft.Adapters.Sql 추가합니다.

  4. Program.cs를 열고 아래 코드 조각에 설명된 대로 클라이언트를 만듭니다.

    
              ScalarFunctions_dboClient client = new ScalarFunctions_dboClient("SqlAdapterBinding_ScalarFunctions_dbo");  
    client.ClientCredentials.UserName.UserName = "<Enter user name here>";  
    client.ClientCredentials.UserName.Password = "<Enter password here>";  
    

    이 코드 조각 ScalarFunctions_dboClient 에서 는 SqlAdapterBindingClient.cs에 정의된 WCF 클라이언트입니다. 이 파일은 어댑터 서비스 참조 추가 플러그 인에서 생성됩니다. SqlAdapterBinding_ScalarFunctions_dbo 는 클라이언트 엔드포인트 구성의 이름이며 app.config 정의됩니다. 이 파일은 어댑터 서비스 참조 플러그 인 추가에서 생성되며 바인딩 속성 및 기타 구성 설정을 포함합니다.

    참고

    이 코드 조각에서는 구성 파일의 바인딩 및 엔드포인트 주소를 사용합니다. 코드에서 이러한 값을 명시적으로 지정할 수도 있습니다. 클라이언트 바인딩을 지정하는 다양한 방법에 대한 자세한 내용은 SQL 어댑터에 대한 클라이언트 바인딩 구성을 참조하세요.

  5. 아래 코드 조각에 설명된 대로 클라이언트를 엽니다.

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  6. GET_EMP_ID 함수를 호출하여 "Manager"로 지정한 직원의 ID를 검색합니다.

    Console.WriteLine("Invoking the GET_EMP_ID function");  
    string emp_designation = "Manager";  
    try  
    {  
          System.Nullable<int> emp_id = client.GET_EMP_ID(emp_designation);  
          Console.WriteLine("The Employee ID for the employee with 'Manager' designation is:" + emp_id);  
    }  
    catch (Exception e)  
    {  
          Console.WriteLine("Exception: " + e.Message);  
          throw;  
    }  
    

    참고

    간단히 하기 위해 Employee 테이블에는 "관리자" 지정을 가진 직원이 한 명뿐입니다. 대상 테이블에 동일한 지정을 가진 직원이 더 많은 경우 그에 따라 함수를 정의해야 합니다.

  7. 아래 코드 조각에 설명된 대로 클라이언트를 닫습니다.

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  8. 프로젝트를 빌드한 다음 실행합니다. 애플리케이션은 "관리자"를 지정하여 직원의 직원 ID를 표시합니다.

참고 항목

WCF 서비스 모델을 사용하여 애플리케이션 개발