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


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

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

Тип данных SQL Server

Тип (в System.Data.SqlTypes or 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 определяется в библиотеке Microsoft.SqlServer.Types.dll, которая устанавливается вместе с SQL Server и которая доступна для загрузки в составе SQL Server 2012 пакета дополнительных компонентов.

Нет

geometry

SqlGeometry

Тип SqlGeometry определяется в библиотеке Microsoft.SqlServer.Types.dll, которая устанавливается вместе с SQL Server и которая доступна для загрузки в составе SQL Server 2012 пакета дополнительных компонентов.

Нет

hierarchyid

SqlHierarchyId

Тип SqlHierarchyId определяется в библиотеке Microsoft.SqlServer.Types.dll, которая устанавливается вместе с SQL Server и которая доступна для загрузки в составе SQL Server 2012 пакета дополнительных компонентов.

Нет

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

Нет

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

Метод 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 для параметра OUTPUT:

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

См. также

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

Типы данных SQL Server в платформе .NET Framework

Журнал изменений

Обновленное содержимое

В таблицу сопоставления добавлены типы SqlGeography, SqlGeometry и SqlHierarchyId.