Сопоставление данных о параметрах 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, Int64, допускающий<значение NULL> |
binary | SqlBytes, SqlBinary | Byte[] |
bit | SqlBoolean | Логическое значение, логическое значение, допускающее значение<NULL> |
char | Нет | Нет |
курсор | Нет | Нет |
date | SqlDateTime | DateTime, DateTime, допускающий значение<NULL> |
datetime | SqlDateTime | DateTime, DateTime, допускающий значение<NULL> |
datetime2 | Нет | DateTime, DateTime, допускающий значение<NULL> |
DATETIMEOFFSET | None | DateTimeOffset, DateTimeOffset, допускающий значение<NULL> |
decimal | SqlDecimal | Decimal, Decimal, допускающий значение<NULL> |
float | SqlDouble | Double, Double, допускающий<значение NULL> |
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. |
Нет |
image | Нет | Нет |
int | SqlInt32 | Int32, Int32, допускающий значение<NULL> |
money | SqlMoney | Decimal, Decimal, допускающий значение<NULL> |
nchar | SqlChars, SqlString | String, Char[] |
ntext | Нет | Нет |
numeric | SqlDecimal | Decimal, Decimal, допускающий значение<NULL> |
nvarchar | SqlChars, SqlString SQLChars лучше подходит для передачи данных и доступа, а SQLString лучше подходит для выполнения строковых операций. |
String, Char[] |
nvarchar(1), nchar(1) | SqlChars, SqlString | Char, String, Char[], символ, допускающий значение<NULL> |
real | SqlSingle (диапазон SqlSingle, однако, больше , чем реальный) | Одинарный, одиночный, допускающий<значение NULL> |
rowversion | Нет | Byte[] |
smallint | SqlInt16 | Int16, Int16, допускающий<значение NULL> |
smallmoney | SqlMoney | Decimal, Decimal, допускающий значение<NULL> |
sql_variant | Нет | Объект |
table | Нет | Нет |
text | Нет | Нет |
time | Нет | TimeSpan, timespan, допускающий значение<NULL> |
timestamp | Нет | Нет |
tinyint | SqlByte | Байт, байт, допускающий значение<NULL> |
uniqueidentifier | SqlGuid | Guid, GUID, допускающий значение<NULL> |
Определяемый пользователем тип (определяемый пользователем тип) | Нет | Тот же класс связывается с определяемым пользователем типом данных в той же сборке или в зависимой сборке. |
varbinary | SqlBytes, SqlBinary | Байт[] |
varbinary(1), binary(1) | SqlBytes, SqlBinary | byte, Byte[], байт, допускающий значение<NULL> |
varchar | Нет | Нет |
xml | Sqlxml | Нет |
Автоматическое преобразование типов данных для выходных параметров
Метод CLR может возвращать сведения в вызывающий код или программу, помечая входной параметр модификатором out (Microsoft Visual C#) или <Out()> ByRef (Microsoft Visual Basic), если входной параметр является типом данных CLR в пространстве имен System.Data.SqlTypes, а вызывающая программа задает эквивалентное SQL Server тип данных в качестве входного параметра, преобразование типа происходит автоматически, когда метод CLR возвращает тип данных.
Например, следующая хранимая процедура CLR имеет входной параметр типа данных SQLInt32 CLR, помеченный как 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 в таблицу сопоставления. |
См. также:
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по