Сопоставление данных о параметрах 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 в таблицу сопоставления. |
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по