Mapování dat parametrů CLR
platí pro:SQL Server
Následující tabulka uvádí datové typy SQL Serveru, jejich ekvivalenty v modulu CLR (Common Language Runtime) pro SQL Server v oboru názvů System.Data.SqlTypes
a jejich nativní ekvivalenty CLR v rozhraní .NET Framework.
Datový typ SQL Serveru | Typ (v System.Data.SqlTypes nebo Microsoft.SqlServer.Types ) |
Datový typ CLR (.NET Framework) |
---|---|---|
bigint | SqlInt64 |
Int64 , Nullable<Int64> |
binární |
SqlBytes , SqlBinary |
Byte[] |
bitová | SqlBoolean |
Boolean , Nullable<Boolean> |
znaku |
Žádný | Žádný |
kurzoru |
Žádný | Žádný |
datum | SqlDateTime |
DateTime , Nullable<DateTime> |
data a času | SqlDateTime |
DateTime , Nullable<DateTime> |
datetime2 | Žádný |
DateTime , Nullable<DateTime> |
datetimeoffset | None |
DateTimeOffset , Nullable<DateTimeOffset> |
desetinných míst | SqlDecimal |
Decimal , Nullable<Decimal> |
plovoucí | SqlDouble |
Double , Nullable<Double> |
zeměpisu |
SqlGeography
1 |
Žádný |
geometrie |
SqlGeometry
1 |
Žádný |
hierarchie |
SqlHierarchyId
1 |
Žádný |
obrázku |
Žádný | Žádný |
int | SqlInt32 |
Int32 , Nullable<Int32> |
peněz | SqlMoney |
Decimal , Nullable<Decimal> |
nchar |
SqlChars , SqlString |
String , Char[] |
textu | Žádný | Žádný |
číselné | SqlDecimal |
Decimal , Nullable<Decimal> |
nvarchar |
SqlChars , SqlString SQLChars je lepší shoda pro přenos a přístup k datům a SQLString je lepší shoda pro provádění operací String . |
String , Char[] |
nvarchar(1), nchar(1) |
SqlChars , SqlString |
Char , String , Char[] , Nullable<char> |
skutečné |
SqlSingle (rozsah SqlSingle je však větší než skutečný) |
Single , Nullable<Single> |
rowversion | Žádný | Byte[] |
malé | SqlInt16 |
Int16 , Nullable<Int16> |
malé | SqlMoney |
Decimal , Nullable<Decimal> |
sql_variant | Žádný | Object |
tabulky |
Žádný | Žádný |
textové | Žádný | Žádný |
čas | Žádný |
TimeSpan , Nullable<TimeSpan> |
časové razítko | Žádný | Žádný |
tinyint | SqlByte |
Byte , Nullable<Byte> |
uniqueidentifier | SqlGuid |
Guid , Nullable<Guid> |
Uživatelem definovaný typ (UDT) | Žádný | Stejná třída, která je vázána na uživatelem definovaný typ ve stejném sestavení nebo závislé sestavení. |
varbinární |
SqlBytes , SqlBinary |
Byte[] |
varbinary(1), binary(1) |
SqlBytes , SqlBinary |
byte , Byte[] , Nullable<byte> |
varchar | Žádný | Žádný |
xml |
SqlXml |
Žádný |
1 definován v Microsoft.SqlServer.Types.dll
, který je nainstalován s SQL Serverem a lze jej stáhnout z balíčku funkcí SQL Server .
Automatický převod datového typu s výstupními parametry
Metoda CLR může vrátit informace do volajícího kódu nebo programu označením vstupního parametru pomocí modifikátoru out
(C#) nebo <Out()> ByRef
(Visual Basic .NET). Pokud vstupní parametr je datový typ CLR v oboru názvů System.Data.SqlTypes
a volající program určuje jeho ekvivalentní datový typ SQL Serveru jako vstupní parametr, převod typu se automaticky provede, když metoda CLR vrátí datový typ.
Například následující uložená procedura CLR má vstupní parametr SqlInt32
datového typu CLR, který je označen out
(C#) nebo <Out()> ByRef
(Visual Basic):
-
jazyka C#
jazyka C# - visual basic .NET
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ ... }
Po sestavení a vytvoření v databázi se uložená procedura vytvoří v SQL Serveru s následujícím jazykem Transact-SQL, který určuje datový typ SQL Serveru int jako výstupní parametr:
CREATE PROCEDURE PriceSum
(@sum INT OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum;
Při volání uložené procedury CLR se datový typ SqlInt32
automaticky převede na int datový typ a vrátí se do volajícího programu.
Ne všechny datové typy CLR lze automaticky převést na jejich ekvivalentní datové typy SQL Serveru prostřednictvím out
parametru. Následující tabulka uvádí tyto výjimky.
Datový typ CLR (SQL Server) | Datový typ SQL Serveru |
---|---|
Decimal |
malé |
SqlMoney |
malé |
Decimal |
peněz |
DateTime |
smalldatetime |
SQLDateTime |
smalldatetime |