CLR 매개 변수 데이터 매핑
적용 대상:SQL Server
다음 표에는 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 | 부울, Nullable<부울> |
char | 없음 | 없음 |
cursor | 없음 | 없음 |
date | SqlDateTime | DateTime, Nullable<DateTime> |
datetime | SqlDateTime | DateTime, Nullable<DateTime> |
datetime2 | 없음 | DateTime, Nullable<DateTime> |
DATETIMEOFFSET | 없음 | DateTimeOffset, Nullable<DateTimeOffset> |
decimal | Sqldecimal | 10진수, Null 허용<10진수> |
float | SqlDouble | Double, Nullable<Double> |
geography | SqlGeography SqlGeography는 SQL Server 함께 설치되고 SQL Server 기능 팩에서 다운로드할 수 있는 Microsoft.SqlServer.Types.dll 정의됩니다. |
없음 |
geometry | SqlGeometry SqlGeometry는 SQL Server 함께 설치되고 SQL Server 기능 팩에서 다운로드할 수 있는 Microsoft.SqlServer.Types.dll 정의됩니다. |
없음 |
hierarchyid | SqlHierarchyId SqlHierarchyId는 SQL Server 함께 설치되고 SQL Server 기능 팩에서 다운로드할 수 있는 Microsoft.SqlServer.Types.dll 정의됩니다. |
없음 |
image | 없음 | 없음 |
int | SqlInt32 | Int32, Nullable<Int32> |
money | SqlMoney | 10진수, Null 허용<10진수> |
nchar | SqlChars, SqlString | String, Char[] |
ntext | 없음 | 없음 |
numeric | SqlDecimal | 10진수, Null 허용<10진수> |
nvarchar | SqlChars, SqlString SQLChars 는 데이터 전송 및 액세스에 더 적합하며 SQLString 은 문자열 작업을 수행하는 데 더 적합합니다. |
String, Char[] |
nvarchar(1), nchar(1) | SqlChars, SqlString | Char, String, Char[], Nullable<char> |
real | SqlSingle ( SqlSingle의 범위는 실제보다 큽니다 .) | Single, Nullable<Single> |
rowversion | 없음 | Byte[] |
smallint | SqlInt16 | Int16, Nullable<Int16> |
smallmoney | SqlMoney | 10진수, Null 허용<10진수> |
sql_variant | 없음 | Object |
table | 없음 | 없음 |
text | 없음 | 없음 |
time | 없음 | TimeSpan, Nullable<TimeSpan> |
timestamp | 없음 | 없음 |
tinyint | SqlByte | 바이트, Null 허용<바이트> |
uniqueidentifier | SqlGuid | Guid, Nullable<Guid> |
UDT(사용자 정의 형식) | 없음 | 동일한 어셈블리 또는 종속 어셈블리의 사용자 정의 형식에 바인딩된 동일한 클래스입니다. |
varbinary | SqlBytes, SqlBinary | Byte[] |
varbinary(1), binary(1) | SqlBytes, SqlBinary | byte, Byte[], Nullable<바이트> |
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 데이터 형식으로 변환되고 호출 프로그램으로 반환됩니다.
그러나 모든 CLR 데이터 형식을 out 매개 변수를 통해 해당 SQL Server 데이터 형식으로 자동으로 변환할 수 있는 것은 아닙니다. 다음 표에서는 이러한 예외를 보여 줍니다.
CLR 데이터 형식(SQL Server) | SQL Server 데이터 형식 |
---|---|
10진수 | smallmoney |
SqlMoney | smallmoney |
10진수 | money |
DateTime | smalldatetime |
SQLDateTime | smalldatetime |
변경 내역
업데이트된 내용 |
---|
매핑 테이블에 SqlGeography, SqlGeometry 및 SqlHierarchyId 형식이 추가되었습니다. |
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기