Mapping dei dati dei parametri CLR

Si applica a:SQL Server

La tabella seguente elenca i tipi di dati di Microsoft SQL Server, gli equivalenti in Common Language Runtime (CLR) per SQL Server nello spazio dei nomi System.Data.SqlTypes e gli 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 Nessuno Nessuno
cursor Nessuno Nessuno
date Sqldatetime DateTime, Nullable<DateTime>
datetime Sqldatetime DateTime, Nullable<DateTime>
datetime2 Nessuno DateTime, Nullable<DateTime>
DATETIMEOFFSET Nessuno DateTimeOffset, Nullable<DateTimeOffset>
decimal Sqldecimal Decimal, Decimalable<>
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.
Nessuno
geometry SqlGeometry

SqlGeometry è definito in Microsoft.SqlServer.Types.dll, installato con SQL Server e può essere scaricato dal feature pack SQL Server.
Nessuno
hierarchyid SqlHierarchyId

SqlHierarchyId è definito in Microsoft.SqlServer.Types.dll, installato con SQL Server e può essere scaricato dal feature pack di SQL Server.
Nessuno
image Nessuno Nessuno
int SqlInt32 Int32, Nullable<Int32>
money Sqlmoney Decimal, Decimalable<>
nchar SqlChars, SqlString String, Char[]
ntext Nessuno Nessuno
numeric Sqldecimal Decimal, Decimalable<>
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 (intervallo di SqlSingle, tuttavia, è maggiore di quello reale) Single, Nullable<Single>
rowversion Nessuno Byte[]
smallint SqlInt16 Int16, Nullable<Int16>
smallmoney Sqlmoney Decimal, Decimalable<>
sql_variant Nessuno Object
tabella Nessuno Nessuno
text Nessuno Nessuno
time Nessuno TimeSpan, Intervallo di tempo nullable<>
timestamp Nessuno Nessuno
tinyint SqlByte Byte, Byte nullable<>
uniqueidentifier Sqlguid Guid, Guid Nullable<>
Tipo definito dall'utente (UDT) Nessuno 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 Nessuno Nessuno
xml Sqlxml Nessuno

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 l'equivalente SQL Server il tipo di dati 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 SQL Server di 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 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 modifiche

Contenuto aggiornato
Aggiunta dei tipi SqlGeography, SqlGeometry e SqlHierarchyId alla tabella di mapping.

Vedere anche

Tipi di dati di SQL Server in .NET Framework