CLR 매개 변수 데이터 매핑

다음 표에서는 Microsoft SQL Server 데이터 형식, System.Data.SqlTypes 네임스페이스의 SQL Server용 CLR(공용 언어 런타임)에서 이에 해당하는 데이터 형식 및 Microsoft .NET Framework에서 이에 해당하는 네이티브 CLR 데이터 형식을 보여 줍니다.

SQL Server 데이터 형식

System.Data.SqlTypes 또는 Microsoft.SqlServer.Types의 형식

CLR 데이터 형식(.NET Framework)

bigint

SqlInt64

Int64, Nullable<Int64>

binary

SqlBytes, SqlBinary

Byte[]

bit

SqlBoolean

Boolean, Nullable<Boolean>

char

없음

없음

cursor

없음

없음

date

SqlDateTime

DateTime, Nullable<DateTime>

datetime

SqlDateTime

DateTime, Nullable<DateTime>

datetime2

없음

DateTime, Nullable<DateTime>

DATETIMEOFFSET

None

DateTimeOffset, Nullable<DateTimeOffset>

decimal

SqlDecimal

Decimal, Nullable<Decimal>

float

SqlDouble

Double, Nullable<Double>

geography

SqlGeography

SqlGeography는 SQL Server와 함께 설치되고 SQL Server 2012 기능 팩에서 다운로드할 수 있는 Microsoft.SqlServer.Types.dll에 정의됩니다.

없음

geometry

SqlGeometry

SqlGeometry는 SQL Server와 함께 설치되고 SQL Server 2012 기능 팩에서 다운로드할 수 있는 Microsoft.SqlServer.Types.dll에 정의됩니다.

없음

hierarchyid

SqlHierarchyId

SqlHierarchyId는 SQL Server와 함께 설치되고 SQL Server 2012 기능 팩에서 다운로드할 수 있는 Microsoft.SqlServer.Types.dll에 정의됩니다.

없음

image

없음

없음

int

SqlInt32

Int32, Nullable<Int32>

money

SqlMoney

Decimal, Nullable<Decimal>

nchar

SqlChars, SqlString

String, Char[]

ntext

없음

없음

numeric

SqlDecimal

Decimal, Nullable<Decimal>

nvarchar

SqlChars, SqlString

SQLChars는 데이터 전송 및 액세스에 더 적합하고 SQLString은 문자열 작업에 더 적합합니다.

String, Char[]

nvarchar(1), nchar(1)

SqlChars, SqlString

Char, String, Char[], Nullable<char>

real

SqlSingle(SqlSingle 범위, 단, real보다 큼)

Single, Nullable<Single>

rowversion

없음

Byte[]

smallint

SqlInt16

Int16, Nullable<Int16>

smallmoney

SqlMoney

Decimal, Nullable<Decimal>

sql_variant

없음

Object

table

없음

없음

text

없음

없음

time

없음

TimeSpan, Nullable<TimeSpan>

timestamp

없음

없음

tinyint

SqlByte

Byte, Nullable<Byte>

uniqueidentifier

SqlGuid

Guid, Nullable<Guid>

User-defined type(UDT)

없음

동일한 어셈블리 또는 종속 어셈블리의 사용자 정의 형식에 바인딩된 동일한 클래스입니다.

varbinary

SqlBytes, SqlBinary

Byte[]

varbinary(1), binary(1)

SqlBytes, SqlBinary

byte, Byte[], Nullable<byte>

varchar

없음

없음

xml

SqlXml

없음

Out 매개 변수로 자동 데이터 형식 변환

CLR 메서드는 out 한정자(Microsoft Visual C#) 또는 <Out()> ByRef(Microsoft Visual Basic)로 입력 매개 변수를 표시하여 호출 코드나 프로그램에 정보를 반환할 수 있습니다. 입력 매개 변수가 System.Data.SqlTypes 네임스페이스의 CLR 데이터 형식이고 호출 프로그램이 이에 해당하는 SQL Server 데이터 형식을 입력 매개 변수로 지정할 경우 CLR 메서드가 데이터 형식을 반환하면 자동으로 형식 변환이 수행됩니다.

예를 들어 다음 CLR 저장 프로시저에는 out(C#) 또는 <Out()> ByRef(Visual Basic)로 표시된 SqlInt32 CLR 데이터 형식의 입력 매개 변수가 있습니다.

   [Microsoft.SqlServer.Server.SqlProcedure]
   public static void PriceSum(out SqlInt32 value)
   { … }
    <Microsoft.SqlServer.Server.SqlProcedure> _
    Public Shared Sub PriceSum( <Out()> ByRef value As SqlInt32)
    …
    End Sub

어셈블리가 데이터베이스에서 만들어진 후에는 저장 프로시저가 int의 SQL Server 데이터 형식을 OUTPUT 매개 변수로 지정하는 다음 Transact-SQL을 사용하여 SQL Server에서 만들어집니다.

CREATE PROCEDURE PriceSum (@sum int OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum

CLR 저장 프로시저 호출되면 SqlInt32 데이터 형식이 자동으로 int 데이터 형식으로 변환되고 호출 프로그램에 반환됩니다.

그러나 Out 매개 변수를 통해 모든 CLR 데이터 형식을 이에 해당하는 SQL Server 데이터 형식으로 변환할 수는 없습니다. 다음 표에서는 이러한 예외를 보여 줍니다.

CLR 데이터 형식(SQL Server)

SQL Server 데이터 형식

Decimal

smallmoney

SqlMoney

smallmoney

Decimal

money

DateTime

smalldatetime

SQLDateTime

smalldatetime

참고 항목

관련 자료

.NET Framework의 SQL Server 데이터 형식

변경 내역

업데이트된 내용

SqlGeography, SqlGeometry 및 SqlHierarchyId 형식이 매핑 테이블에 추가되었습니다.