Mappage des données de paramètres CLR
Le tableau suivant dresse la liste des types de données MicrosoftSQL Server, de leurs équivalents dans le CLR pour SQL Server dans l'espace de noms System.Data.SqlTypes et de leurs équivalents de CLR natifs dans le Microsoft.NET Framework.
Type de données SQL Server |
Type de données CLR (SQL Server) |
Type de données CLR (.NET Framework) |
bigint |
SqlInt64 |
Int64, Nullable<Int64> |
binary |
SqlBytes, SqlBinary |
Byte[] |
bit |
SqlBoolean |
Boolean, Nullable<Boolean> |
char |
Aucun |
Aucun |
cursor |
Aucun |
Aucun |
date |
SqlDateTime |
DateTime, Nullable<DateTime> |
datetime |
SqlDateTime |
DateTime, Nullable<DateTime> |
datetime2 |
SqlDateTime |
DateTime, Nullable<DateTime> |
DATETIMEOFFSET |
None |
DateTimeOffset, Nullable<DateTimeOffset> |
decimal |
SqlDecimal |
Decimal, Nullable<Decimal> |
float |
SqlDouble |
Double, Nullable<Double> |
geography |
SqlGeography SqlGeography est défini dans Microsoft.SqlServer.Types.dll, qui est installée avec SQL Server et peut être téléchargée à partir de la page SQL Server 2008 Feature Pack. |
Aucun |
geometry |
SqlGeometry SqlGeometry est défini dans Microsoft.SqlServer.Types.dll, qui est installée avec SQL Server et peut être téléchargée à partir de la page SQL Server 2008 Feature Pack. |
Aucun |
hierarchyid |
SqlHierarchyId SqlHierarchyId est défini dans Microsoft.SqlServer.Types.dll, qui est installée avec SQL Server et peut être téléchargée à partir de la page SQL Server 2008 Feature Pack. |
Aucun |
image |
Aucun |
Aucun |
int |
SqlInt32 |
Int32, Nullable<Int32> |
money |
SqlMoney |
Decimal, Nullable<Decimal> |
nchar |
SqlChars, SqlString |
String, Char[] |
ntext |
Aucun |
Aucun |
numeric |
SqlDecimal |
Decimal, Nullable<Decimal> |
nvarchar |
SqlChars, SqlString SQLChars est une meilleure correspondance pour le transfert de données et leur accès, et SQLString est une meilleure correspondance pour effectuer des opérations sur une chaîne. |
String, Char[] |
nvarchar(1), nchar(1) |
SqlChars, SqlString |
Char, String, Char[], Nullable<char> |
real |
SqlSingle |
Single, Nullable<Single> |
rowversion |
Aucun |
Byte[] |
smallint |
SqlInt16 |
Int16, Nullable<Int16> |
smallmoney |
SqlMoney |
Decimal, Nullable<Decimal> |
sql_variant |
Aucun |
Object |
table |
Aucun |
Aucun |
text |
Aucun |
Aucun |
time |
TimeSpan |
TimeSpan, Nullable<TimeSpan> |
timestamp |
Aucun |
Aucun |
tinyint |
SqlByte |
Byte, Nullable<Byte> |
uniqueidentifier |
SqlGuid |
Guid, Nullable<Guid> |
User-defined type(UDT) |
Aucun |
La même classe liée au type défini par l'utilisateur dans le même assembly ou un assembly dépendant. |
varbinary |
SqlBytes, SqlBinary |
Byte[] |
varbinary(1), binary(1) |
SqlBytes, SqlBinary |
byte, Byte[], Nullable<byte> |
varchar |
Aucun |
Aucun |
xml |
SqlXml |
Aucun |
Conversion automatique de types de données avec les paramètres de sortie
Une méthode CLR peut retourner des informations au programme ou code appelant en marquant un paramètre d'entrée avec le modificateur out (Microsoft Visual C#) ou <Out()> ByRef (Microsoft Visual Basic). Si le paramètre d'entrée est un type de données CLR de l'espace de noms System.Data.SqlTypes et que le programme appelant spécifie son type de données SQL Server équivalent comme paramètre d'entrée, une conversion de type se produit automatiquement lorsque la méthode CLR retourne le type de données.
Par exemple, la procédure stockée CLR suivante a un paramètre d'entrée de type de données CLR SqlInt32 marqué avec out (C#) ou <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
Après que l'assembly a été créé dans la base de données, la procédure stockée est créée dans SQL Server avec le code Transact-SQL suivant, qui spécifie un type de données SQL Serverint comme paramètre OUTPUT :
CREATE PROCEDURE PriceSum (@sum int OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum
Lorsque la procédure stockée CLR est appelée, le type de données SqlInt32 est converti automatiquement en un type de données int et retourné au programme appelant.
Cependant, certains types de données CLR ne peuvent pas être convertis automatiquement en leurs types de données SQL Server équivalents via un paramètre de sortie. Le tableau suivant répertorie ces exceptions.
Type de données CLR (SQL Server) |
Type de données SQL Server |
Decimal |
smallmoney |
SqlMoney |
smallmoney |
Decimal |
money |
DateTime |
smalldatetime |
SQLDateTime |
smalldatetime |
Historique des modifications
Mise à jour du contenu |
---|
Ajout de types SqlGeography, SqlGeometry et SqlHierarchyId à la table de mappage. |