Mapping dei dati dei parametri CLR

Si applica a: SQL Server

La tabella seguente elenca i tipi di dati di Microsoft SQL Server, i relativi equivalenti in Common Language Runtime (CLR) per SQL Server nello spazio dei nomi System.Data.SqlTypes e i relativi equivalenti CLR nativi in Microsoft .NET Framework.

Tipo di dati di SQL Server Tipo (in System.Data.SqlTypes o Microsoft.SqlServer.Types) Tipo di dati CLR (.NET Framework)
bigint SqlInt64 Int64, Nullable<Int64>
binary SqlBytes, SqlBinary Byte[]
bit SqlBoolean Boolean, Boolean Nullable<>
char None None
cursor None None
date SqlDateTime DateTime, Nullable<DateTime>
datetime SqlDateTime DateTime, Nullable<DateTime>
datetime2 None DateTime, Nullable<DateTime>
DATETIMEOFFSET Nessuno DateTimeOffset, Nullable<DateTimeOffset>
decimal SqlDecimal Decimal, Decimalable<Decimal>
float SqlDouble Double, Nullable<Double>
geography SqlGeography

SqlGeography è definito in Microsoft.SqlServer.Types.dll, installato con SQL Server e può essere scaricato dal Feature Pack di SQL Server.
None
geometry SqlGeometry

SqlGeometry è definito in Microsoft.SqlServer.Types.dll, installato con SQL Server e può essere scaricato dal Feature Pack di SQL Server.
None
hierarchyid SqlHierarchyId

SqlHierarchyId è definito in Microsoft.SqlServer.Types.dll, installato con SQL Server e può essere scaricato dal Feature Pack di SQL Server.
None
Immagine None None
int SqlInt32 Int32, Nullable<Int32>
money SqlMoney Decimal, Decimalable<Decimal>
nchar SqlChars, SqlString String, Char[]
ntext None None
numeric SqlDecimal Decimal, Decimalable<Decimal>
nvarchar SqlChars, SqlString

SQLChars è una corrispondenza migliore per il trasferimento e l'accesso ai dati e SQLString è una corrispondenza migliore per l'esecuzione di operazioni stringhe.
String, Char[]
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[], Nullable<char>
real SqlSingle (l'intervallo di SqlSingle, tuttavia, è maggiore di real) Single, Nullable<Single>
rowversion None Byte[]
smallint SqlInt16 Int16, Nullable<Int16>
smallmoney SqlMoney Decimal, Decimalable<Decimal>
sql_variant None Oggetto
table None None
Testo None None
time None TimeSpan, Intervallo di tempo nullable<>
timestamp None None
tinyint SqlByte Byte, Byte nullable<>
uniqueidentifier SqlGuid Guid, Guid Nullable<>
Tipo definito dall'utente (UDT) None La stessa classe associata al tipo definito dall'utente (UDT) nello stesso assembly o un assembly dipendente.
varbinary SqlBytes, SqlBinary Byte[]
varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[], byte nullable<byte>
varchar None None
xml SqlXml None

Conversione automatica dei tipi di dati con parametri Out

Un metodo CLR può restituire informazioni al codice o al programma chiamante contrassegnando un parametro di input con il modificatore out (Microsoft Visual C#) o< Out()> ByRef (Microsoft Visual Basic) Se il parametro di input è un tipo di dati CLR nello spazio dei nomi System.Data.SqlTypes e il programma chiamante specifica il tipo di dati SQL Server equivalente come parametro di input, una conversione del tipo viene eseguita automaticamente quando il metodo CLR restituisce il tipo di dati.

Ad esempio, la stored procedure CLR seguente ha un parametro di input del tipo di dati CLR SqlInt32 contrassegnato con out (C#) o <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  

Dopo aver compilato e creato l'assembly nel database, la stored procedure viene creata in SQL Server con il codice Transact-SQL seguente, che specifica un tipo di dati di SQL Server int come parametro OUTPUT:

CREATE PROCEDURE PriceSum (@sum int OUTPUT)  
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum  

Quando viene chiamata la stored procedure CLR, il tipo di dati SqlInt32 viene convertito automaticamente in un tipo di dati int e restituito al programma chiamante.

Non tutti i tipi di dati CLR possono essere convertiti automaticamente nei tipi di dati di SQL Server equivalenti tramite un parametro out. Nella seguente tabella vengono descritte queste eccezioni.

Tipo di dati CLR (SQL Server) Tipo di dati di SQL Server
Decimale smallmoney
SqlMoney smallmoney
Decimale money
DateTime smalldatetime
SQLDateTime smalldatetime

Cronologia delle modifiche

Contenuto aggiornato
Sono stati aggiunti tipi SqlGeography, SqlGeometry e SqlHierarchyId alla tabella di mapping.

Vedi anche

Tipi di dati di SQL Server in .NET Framework