728x90
반응형
C#에서 CLR 라이브러리 활용
MSSQL 에서 사용하는 타입과 C#에서 사용하는 타입을 맞쳐야 사용이 가능하다.
아래 페이지에 자세히 설명이 되어 있다.
https://docs.microsoft.com/ko-kr/dotnet/framework/data/adonet/sql-server-data-type-mappings
SQL Server 데이터 형식 매핑 - ADO.NET
SQL Server와 .NET Framework에 대한 서로 다른 유형 시스템 간의 매핑에 대해 알아봅니다. 이 문서에는 ADO.NET에서 시스템이 상호 작용 하는 방식이 요약 되어 있습니다.
docs.microsoft.com
주요 타입만 보자면 이정도가 가장 많이 쓰일거 같다.
SQL | C# .NET |
nvarchar | String SqlString |
varbinary | Byte [] |
float | Double |
int | Int |
DateTime | DateTime |
SQL varchar 타입이 String도 가능하다고 되어 있으나 C#에서는 적용이 되진 않는다.
아래 C# 예시 소스를 보면 각 타입 별 사용 방법을 확인 할 수 있다.
입력 값을 받아 그래도 Return 하는 함수.
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString SqlStringTest(SqlString input)
{
return new SqlString (string.Format("{0}", input));
}
[Microsoft.SqlServer.Server.SqlFunction]
public static Byte[] ByteTest(Byte [] input)
{
return input;
}
[Microsoft.SqlServer.Server.SqlFunction]
public static Double DoubleTest(Double input)
{
return input;
}
[Microsoft.SqlServer.Server.SqlFunction]
public static int intTest(int input)
{
return input;
}
[Microsoft.SqlServer.Server.SqlFunction]
public static DateTime DateTimeTest(DateTime input)
{
return input;
}
CLR 라이브러리 적용 SQL. (clr dll 라이브러리 적용은 다른 블로그 참고.)
CREATE FUNCTION [dbo].[SqlStringTest] (@input [nvarchar](100))
RETURNS [nvarchar](100) WITH EXECUTE AS CALLER AS
EXTERNAL NAME [sqlclr].[UserDefinedFunctions].[SqlStringTest]
CREATE FUNCTION [dbo].[ByteTest] ( @input [varbinary](100) )
RETURNS [varbinary](100) WITH EXECUTE AS CALLER AS
EXTERNAL NAME [sqlclr].[UserDefinedFunctions].[ByteTest]
CREATE FUNCTION [dbo].[DoubleTest] ( @input [float] )
RETURNS [float] WITH EXECUTE AS CALLER AS
EXTERNAL NAME [sqlclr].[UserDefinedFunctions].[DoubleTest]
CREATE FUNCTION [dbo].[intTest] ( @input [int] )
RETURNS [int] WITH EXECUTE AS CALLER AS
EXTERNAL NAME [sqlclr].[UserDefinedFunctions].[intTest]
CREATE FUNCTION [dbo].[DateTimeTest] ( @input [DateTime] )
RETURNS [DateTime] WITH EXECUTE AS CALLER AS
EXTERNAL NAME [sqlclr].[UserDefinedFunctions].[DateTimeTest]
타입 별 SQL 테스트
select dbo.SqlStringTest('abcd')
select CONVERT(varchar(10),dbo.ByteTest(CONVERT(varbinary(10),'abcd')))
select dbo.DoubleTest(123456789.123)
select dbo.intTest(123456789)
select dbo.DateTimeTest(SYSDATETIME())
728x90
반응형
'DB > MSSQL' 카테고리의 다른 글
[MSSQL 오류] 컴파일 오류_미리 컴파일된 헤더 파일이 이전 버전의 컴파일러에서 만들어졌거나 미리 컴파일된 헤더가 c++인데 c에서 사용하고 있거나 또는 그 반대의 경우입니다. (0) | 2021.12.07 |
---|---|
MSSQL C 확장 저장 프로시저 (0) | 2021.12.06 |
MSSQL C# CLR 라이브러리 SQL 쿼리 (0) | 2021.12.02 |
MSSQL C# CLR 외부 라이브러리 적용 (0) | 2021.11.19 |
댓글