Mappa CLR-parameterdata
gäller för:SQL Server
I följande tabell visas SQL Server-datatyper, deras motsvarigheter i CLR (Common Language Runtime) för SQL Server i System.Data.SqlTypes
-namnområdet och deras interna CLR-motsvarigheter i .NET Framework.
SQL Server-datatyp | Skriv (i System.Data.SqlTypes eller Microsoft.SqlServer.Types ) |
CLR-datatyp (.NET Framework) |
---|---|---|
bigint | SqlInt64 |
Int64 , Nullable<Int64> |
binär |
SqlBytes , SqlBinary |
Byte[] |
bit | SqlBoolean |
Boolean , Nullable<Boolean> |
tecken | Ingen | Ingen |
markören | Ingen | Ingen |
datum | SqlDateTime |
DateTime , Nullable<DateTime> |
datetime | SqlDateTime |
DateTime , Nullable<DateTime> |
datetime2 | Ingen |
DateTime , Nullable<DateTime> |
datetimeoffset | None |
DateTimeOffset , Nullable<DateTimeOffset> |
decimal | SqlDecimal |
Decimal , Nullable<Decimal> |
flyttal | SqlDouble |
Double , Nullable<Double> |
geografi |
SqlGeography
1 |
Ingen |
geometri |
SqlGeometry
1 |
Ingen |
hierarchyid |
SqlHierarchyId
1 |
Ingen |
bild | Ingen | Ingen |
int | SqlInt32 |
Int32 , Nullable<Int32> |
pengar | SqlMoney |
Decimal , Nullable<Decimal> |
nchar |
SqlChars , SqlString |
String , Char[] |
ntext | Ingen | Ingen |
numeriska | SqlDecimal |
Decimal , Nullable<Decimal> |
nvarchar |
SqlChars , SqlString SQLChars är en bättre matchning för dataöverföring och åtkomst, och SQLString är en bättre matchning för att utföra String åtgärder. |
String , Char[] |
nvarchar(1), nchar(1) |
SqlChars , SqlString |
Char , String , Char[] , Nullable<char> |
riktiga |
SqlSingle (men intervallet för SqlSingle är större än verkliga) |
Single , Nullable<Single> |
rowversion | Ingen | Byte[] |
liten | SqlInt16 |
Int16 , Nullable<Int16> |
smallmoney | SqlMoney |
Decimal , Nullable<Decimal> |
sql_variant | Ingen | Object |
tabell | Ingen | Ingen |
text | Ingen | Ingen |
tid | Ingen |
TimeSpan , Nullable<TimeSpan> |
tidsstämpel | Ingen | Ingen |
pytteliten | SqlByte |
Byte , Nullable<Byte> |
unikidentifierare | SqlGuid |
Guid , Nullable<Guid> |
Användardefinierad typ (UDT) | Ingen | Samma klass som är bunden till den användardefinierade typen i samma sammansättning eller en beroende sammansättning. |
varbinary |
SqlBytes , SqlBinary |
Byte[] |
varbinary(1), binary(1) |
SqlBytes , SqlBinary |
byte , Byte[] , Nullable<byte> |
varchar | Ingen | Ingen |
XML- | SqlXml |
Ingen |
1 Definieras i Microsoft.SqlServer.Types.dll
, som installeras med SQL Server och kan laddas ned från SQL Server funktionspaketet.
Automatisk datatypkonvertering med utdataparametrar
En CLR-metod kan returnera information till anropande kod eller program genom att markera en indataparameter med out
-modifieraren (C#) eller <Out()> ByRef
(Visual Basic .NET). Om indataparametern är en CLR-datatyp i System.Data.SqlTypes
namnområde och det anropande programmet anger motsvarande SQL Server-datatyp som indataparameter, sker en typkonvertering automatiskt när CLR-metoden returnerar datatypen.
Följande CLR-lagrade procedur har till exempel en indataparameter av SqlInt32
CLR-datatyp som är markerad med out
(C#) eller <Out()> ByRef
(Visual Basic):
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ ... }
När sammansättningen har skapats och skapats i databasen skapas den lagrade proceduren i SQL Server med följande Transact-SQL, som anger en SQL Server-datatyp av int som en OUTPUT-parameter:
CREATE PROCEDURE PriceSum
(@sum INT OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum;
När den lagrade CLR-proceduren anropas konverteras SqlInt32
datatyp automatiskt till en int datatyp och returneras till anropande program.
Alla CLR-datatyper kan dock inte automatiskt konverteras till motsvarande SQL Server-datatyper via en out
parameter. I följande tabell visas dessa undantag.
CLR-datatyp (SQL Server) | SQL Server-datatyp |
---|---|
Decimal |
smallmoney |
SqlMoney |
smallmoney |
Decimal |
pengar |
DateTime |
smalldatetime |
SQLDateTime |
smalldatetime |