Mapping dei dati dei parametri CLR

Si applica a: sìSQL Server (tutte le versioni supportate)

Nella tabella seguente sono elencati i tipi di dati, i relativi equivalenti in Common Language Runtime (CLR) per nello spazio dei nomi Microsoft SQL Server SQL Server System.Data.SqlTypes e i relativi equivalenti CLR nativi nel 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, Nullable<Boolean>
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, Nullable<Decimal>
float SqlDouble Double, Nullable<Double>
geography SqlGeography

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

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

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

SQLChars è una corrispondenza migliore per il trasferimento e l'accesso dei dati e SQLString è una corrispondenza migliore per l'esecuzione di operazioni di tipo String.
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 Nessuno Byte[]
smallint SqlInt16 Int16, Nullable<Int16>
smallmoney Sqlmoney Decimal, Nullable<Decimal>
sql_variant Nessuno Object
tabella Nessuno Nessuno
text Nessuno Nessuno
time Nessuno TimeSpan, Nullable<TimeSpan>
timestamp Nessuno Nessuno
tinyint SqlByte Byte, Nullable<Byte>
uniqueidentifier SqlGuid Guid, Nullable<Guid>
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[], 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 il tipo di dati equivalente come parametro di input, viene eseguita automaticamente una conversione del tipo quando il metodo CLR restituisce il tipo di SQL Server dati.

Ad esempio, il 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 la compilazione e la creazione dell'assembly nel database, il stored procedure viene creato in con l'istruzione Transact-SQL seguente, che specifica un tipo di dati int come parametro SQL Server SQL Server OUTPUT:

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

Quando viene chiamato il 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 dei 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