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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

В следующей таблице перечислены MicrosoftMicrosoft SQL ServerSQL Server типы данных, их эквиваленты в системе common language runtime (CLR) для SQL ServerSQL Server в System.Data.SqlTypes пространства имен и их собственные эквиваленты CLR в MicrosoftMicrosoft .NET framework.The following table lists MicrosoftMicrosoft SQL ServerSQL Server data types, their equivalents in the common language runtime (CLR) for SQL ServerSQL Server in the System.Data.SqlTypes namespace, and their native CLR equivalents in the MicrosoftMicrosoft .NET Framework.

Тип данных SQL ServerSQL Server data type Тип (в System.Data.SqlTypes or Microsoft.SqlServer.Types)Type (in System.Data.SqlTypes or Microsoft.SqlServer.Types) Тип данных CLR (.NET Framework)CLR data type (.NET Framework)
bigintbigint SqlInt64SqlInt64 Int64, допускающее значение NULL<Int64 >Int64, Nullable<Int64>
binarybinary SqlBytes, SqlBinarySqlBytes, SqlBinary Byte]Byte[]
bitbit SqlBooleanSqlBoolean Логический, допускающие значения NULL<логическое >Boolean, Nullable<Boolean>
charchar NoneNone NoneNone
курсорcursor NoneNone NoneNone
datedate SqlDateTimeSqlDateTime DateTime, допускающий значение NULL<DateTime >DateTime, Nullable<DateTime>
datetimedatetime SqlDateTimeSqlDateTime DateTime, допускающий значение NULL<DateTime >DateTime, Nullable<DateTime>
datetime2datetime2 NoneNone DateTime, допускающий значение NULL<DateTime >DateTime, Nullable<DateTime>
DATETIMEOFFSETDATETIMEOFFSET NoneNone DateTimeOffset, допускающие значения NULL<DateTimeOffset >DateTimeOffset, Nullable<DateTimeOffset>
decimaldecimal SqlDecimalSqlDecimal Decimal, допускающий значение NULL<десятичное >Decimal, Nullable<Decimal>
floatfloat SqlDoubleSqlDouble Double, допускающее значение NULL<Double >Double, Nullable<Double>
geographygeography SqlGeographySqlGeography

SqlGeography определяется в библиотеке Microsoft.SqlServer.Types.dll, которая устанавливается вместе с SQL Server и могут быть загружены из в SQL ServerSQL Server пакет дополнительных компонентов.SqlGeography is defined in Microsoft.SqlServer.Types.dll, which is installed with SQL Server and can be downloaded from the SQL ServerSQL Server feature pack.
NoneNone
geometrygeometry SqlGeometrySqlGeometry

SqlGeometry определяется в библиотеке Microsoft.SqlServer.Types.dll, которая устанавливается вместе с SQL Server и могут быть загружены из в SQL ServerSQL Server пакет дополнительных компонентов.SqlGeometry is defined in Microsoft.SqlServer.Types.dll, which is installed with SQL Server and can be downloaded from the SQL ServerSQL Server feature pack.
NoneNone
hierarchyidhierarchyid SqlHierarchyIdSqlHierarchyId

SqlHierarchyId определяется в библиотеке Microsoft.SqlServer.Types.dll, которая устанавливается вместе с SQL Server и могут быть загружены из в SQL ServerSQL Server пакет дополнительных компонентов.SqlHierarchyId is defined in Microsoft.SqlServer.Types.dll, which is installed with SQL Server and can be downloaded from the SQL ServerSQL Server feature pack.
NoneNone
imageimage NoneNone NoneNone
intint SqlInt32SqlInt32 Int32, допускающий значение NULL<Int32 >Int32, Nullable<Int32>
moneymoney SqlMoneySqlMoney Decimal, допускающий значение NULL<десятичное >Decimal, Nullable<Decimal>
ncharnchar SqlChars, SqlStringSqlChars, SqlString Строка, Char]String, Char[]
ntextntext NoneNone NoneNone
numericnumeric SqlDecimalSqlDecimal Decimal, допускающий значение NULL<десятичное >Decimal, Nullable<Decimal>
nvarcharnvarchar SqlChars, SqlStringSqlChars, SqlString

SQLChars лучше подходит для передачи данных и доступа, и SQLString лучше подходит для выполнения строковых операций.SQLChars is a better match for data transfer and access, and SQLString is a better match for performing String operations.
Строка, Char]String, Char[]
nvarchar(1), nchar(1)nvarchar(1), nchar(1) SqlChars, SqlStringSqlChars, SqlString Char, строка, Char [], Nullable<char >Char, String, Char[], Nullable<char>
realreal SqlSingle (диапазон SqlSingle, тем не менее, больше, чем реальных)SqlSingle (the range of SqlSingle, however, is larger than real) Единый, допускающие значения NULL<единый >Single, Nullable<Single>
rowversionrowversion NoneNone Byte]Byte[]
smallintsmallint SqlInt16SqlInt16 Int16, допускающее значение NULL<Int16 >Int16, Nullable<Int16>
smallmoneysmallmoney SqlMoneySqlMoney Decimal, допускающий значение NULL<десятичное >Decimal, Nullable<Decimal>
sql_variantsql_variant NoneNone ОбъектObject
tabletable NoneNone NoneNone
texttext NoneNone NoneNone
timetime NoneNone Интервал времени, допускающие значения NULL<TimeSpan >TimeSpan, Nullable<TimeSpan>
timestamptimestamp NoneNone NoneNone
tinyinttinyint SqlByteSqlByte Байт, допускающий значение NULL<байтов >Byte, Nullable<Byte>
uniqueidentifieruniqueidentifier SqlGuidSqlGuid Идентификатор GUID, допускающий значение NULL<Guid >Guid, Nullable<Guid>
Определяемые пользователем type(UDT)User-defined type(UDT) NoneNone Тот же класс связывается с определяемым пользователем типом данных в той же сборке или в зависимой сборке.The same class that is bound to the user-defined type in the same assembly or a dependent assembly.
varbinaryvarbinary SqlBytes, SqlBinarySqlBytes, SqlBinary Byte]Byte[]
varbinary(1), binary(1)varbinary(1), binary(1) SqlBytes, SqlBinarySqlBytes, SqlBinary байт, Byte [], Nullable<байтов >byte, Byte[], Nullable<byte>
varcharvarchar NoneNone NoneNone
xmlxml SqlXmlSqlXml NoneNone

Автоматическое преобразование типов данных для выходных параметровAutomatic Data Type Conversion with Out Parameters

Метод CLR может возвращать сведения в вызывающий код или программы, помечая входной параметр с out модификатор (Microsoft Visual C#) или <Out() > ByRef (Microsoft Visual Basic) Если входной параметр является типом данных CLR в System.Data.SqlTypes пространства имен и вызывающая программа указывает эквивалентное SQL ServerSQL Server как входной параметр, тип данных, преобразование типов осуществляется автоматически Когда метод CLR возвращает тип данных.A CLR method can return information to the calling code or program by marking an input parameter with the out modifier (Microsoft Visual C#) or <Out()> ByRef (Microsoft Visual Basic) If the input parameter is a CLR data type in the System.Data.SqlTypes namespace, and the calling program specifies its equivalent SQL ServerSQL Server data type as the input parameter, a type conversion occurs automatically when the CLR method returns the data type.

Например, следующая хранимая процедура CLR имеет входной параметр SqlInt32 тип данных CLR, который помечен атрибутом out (C#) или <Out() > ByRef () Visual Basic):For example, the following CLR stored procedure has an input parameter of SqlInt32 CLR data type that is marked with out (C#) or <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 ServerSQL Server с следующий код Transact-SQL, который указывает SQL ServerSQL Server тип данных int как ВЫХОДНОЙ параметр:After the assembly is built and created in the database, the stored procedure is created in SQL ServerSQL Server with the following Transact-SQL, which specifies a SQL ServerSQL Server data type of int as an OUTPUT parameter:

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

При сохранении CLR вызове процедуры, SqlInt32 автоматически преобразуется в тип данных int тип данных и возвращается вызывающей программе.When the CLR stored procedure is called, the SqlInt32 data type is automatically converted to an int data type, and returned to the calling program.

Однако не все типы данных CLR могут автоматически преобразовываться в эквивалентные им типы данных SQL ServerSQL Server с помощью выходного параметра.Not all CLR data types can be automatically converted to their equivalent SQL ServerSQL Server data types through an out parameter, however. В следующей таблице перечислены эти исключения.The following table lists these exceptions.

Тип данных CLR (SQL Server)CLR data type (SQL Server) Тип данных SQL ServerSQL Server data type
DecimalDecimal smallmoneysmallmoney
SqlMoneySqlMoney smallmoneysmallmoney
DecimalDecimal moneymoney
DateTimeDateTime smalldatetimesmalldatetime
SQLDateTimeSQLDateTime smalldatetimesmalldatetime

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

Обновленное содержимоеUpdated content
Добавлен SqlGeography, SqlGeometry, и SqlHierarchyId типов в таблицу сопоставления.Added SqlGeography, SqlGeometry, and SqlHierarchyId types to the mapping table.

См. такжеSee Also

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