Поделиться через


Сопоставление данных о параметрах CLR

В следующей таблице содержится перечень типов данных MicrosoftSQL Server, их эквивалентов в среде CLR для SQL Server в пространстве имен System.Data.SqlTypes и их собственные эквиваленты CLR в Microsoft .NET Framework.

Тип данных SQL Server

Тип данных CLR (SQL Server)

Тип данных среды 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

SqlDateTime

DateTime, Nullable<DateTime>

DATETIMEOFFSET

None

DateTimeOffset, Nullable<DateTimeOffset>

decimal

SqlDecimal

Decimal, Nullable<Decimal>

float

SqlDouble

Double, Nullable<Double>

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

Single, Nullable<Single>

rowversion

Отсутствует

Byte[]

smallint

SqlInt16

Int16, Nullable<Int16>

smallmoney

SqlMoney

Decimal, Nullable<Decimal>

sql_variant

Отсутствует

Object

table

Отсутствует

Отсутствует

text

Отсутствует

Отсутствует

time

TimeSpan

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

Отсутствует

Автоматическое преобразование типов данных с выходными параметрами

Метод CLR может возвращать данные вызывающему коду или программе, сопровождая входной параметр модификатором out (Microsoft Visual C#) или <Out()> ByRef (Microsoft Visual Basic). Если входной параметр принадлежит типу данных CLR в пространстве имен System.Data.SqlTypes, и вызывающая программа указывает свой соответствующий тип данных SQL Server как входной параметр, преобразование типов осуществляется автоматически, когда метод CLR возвращает тип данных.

Так, следующая хранимая процедура CLR имеет входной параметр с типом данных CLR SqlInt32, помеченный модификатором out (C#) или <Out()> ByRef (Visual Basic):

   [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

После формирования сборки в базе данных хранимая процедура создается в SQL Server со следующим кодом Transact-SQL, который указывает тип данных SQL Server выражения int как ВЫХОДНОГО параметра:

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

При вызове хранимой процедуры CLR тип данных SqlInt32 автоматически преобразуется в тип данных int и возвращается вызывающей программе.

Однако не все типы данных CLR могут автоматически преобразовываться в эквивалентные им типы данных SQL Server с помощью выходного параметра. В следующей таблице перечислены эти исключения.

Тип данных CLR (SQL Server)

Тип данных SQL Server

Decimal

smallmoney

SqlMoney

smallmoney

Decimal

money

DateTime

smalldatetime

SQLDateTime

smalldatetime

См. также

Другие ресурсы