Sdílet prostřednictvím


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):

[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