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


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

Область применения: SQL Server

В следующей таблице перечислены типы данных 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 Байт[]
bit SqlBoolean Boolean, Nullable<Boolean>
char нет нет
курсор нет нет
date SqlDateTime DateTime, Nullable<DateTime>
datetime SqlDateTime DateTime, Nullable<DateTime>
datetime2 нет DateTime, Nullable<DateTime>
DATETIMEOFFSET Не допускается DateTimeOffset, Nullable<DateTimeOffset>
десятичное SqlDecimal Десятичная, допускаемая значение<NULL>
float SqlDouble Double, Nullable<Double>
geography SqlGeography

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

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

SqlHierarchyId определяется в Microsoft.SqlServer.Types.dll, которая установлена с SQL Server и может быть загружена из пакета дополнительных компонентов SQL Server.
нет
Изображение нет нет
int SqlInt32 Int32, Nullable<Int32>
money SqlMoney Десятичная, допускаемая значение<NULL>
nchar SqlChars, SqlString String, Char[]
ntext нет нет
numeric SqlDecimal Десятичная, допускаемая значение<NULL>
nvarchar SqlChars, SqlString

SQLChars лучше подходит для передачи и доступа к данным, и SQLString лучше подходит для выполнения строковых операций.
String, Char[]
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[], Nullable<char>
real SqlSingle (диапазон SqlSingle, однако, больше, чем реально) Одиночный, допускающий значение<NULL>
rowversion нет Байт[]
smallint SqlInt16 Int16, Nullable<Int16>
smallmoney SqlMoney Десятичная, допускаемая значение<NULL>
sql_variant нет Объект
table нет нет
text нет нет
time нет TimeSpan, nullable<TimeSpan>
timestamp нет нет
tinyint SqlByte Byte, Nullable<Byte>
uniqueidentifier SqlGuid Guid, nullable<GUID>
Определяемый пользователем тип(UDT) нет Тот же класс связывается с определяемым пользователем типом данных в той же сборке или в зависимой сборке.
varbinary SqlBytes, SqlBinary Байт[]
varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[], байт, допускающий значение<NULL>
varchar нет нет
xml SqlXml нет

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

Метод CLR может возвращать сведения в вызывающий код или программу, помечая входной параметр с модификатором (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 с помощью параметра out. В следующей таблице перечислены эти исключения.

Тип данных CLR (SQL Server) Тип данных SQL Server
Десятичное число smallmoney
SqlMoney smallmoney
Десятичное число money
DateTime smalldatetime
SQLDateTime smalldatetime

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

Обновленное содержимое
Добавлены типы SqlGeography, SqlGeometry и SqlHierarchyId в таблицу сопоставления.

См. также

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