Mappage des données de paramètres CLR
S’applique à : SQL Server
Le tableau suivant répertorie les types de données Microsoft SQL Server, leurs équivalents dans le Common Language Runtime (CLR) pour SQL Server dans l’espace de noms System.Data.SqlTypes et leurs équivalents CLR natifs dans Microsoft .NET Framework.
Type de données SQL Server | Type (dans System.Data.SqlTypes ou Microsoft.SqlServer.Types) | Type de données 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, DateTime nullable<> |
datetime | SqlDateTime | DateTime, DateTime nullable<> |
datetime2 | Aucune | DateTime, DateTime nullable<> |
DATETIMEOFFSET | Aucun | DateTimeOffset, DateTimeOffset Nullable<> |
decimal | SqlDecimal | Decimal, Nullable<Decimal> |
float | SqlDouble | Double, Double nullable<> |
Geography | SqlGeography SqlGeography est défini dans Microsoft.SqlServer.Types.dll, qui est installé avec SQL Server et peut être téléchargé à partir du pack de fonctionnalités SQL Server. |
Aucune |
geometry | SqlGeometry SqlGeometry est défini dans Microsoft.SqlServer.Types.dll, qui est installé avec SQL Server et peut être téléchargé à partir du pack de fonctionnalités SQL Server. |
Aucune |
hierarchyid | SqlHierarchyId SqlHierarchyId est défini dans Microsoft.SqlServer.Types.dll, qui est installé avec SQL Server et peut être téléchargé à partir du pack de fonctionnalités SQL Server. |
Aucune |
image | None | None |
int | SqlInt32 | Int32, Nullable<Int32> |
money | SqlMoney | Decimal, Nullable<Decimal> |
nchar | SqlChars, SqlString | String, Char[] |
ntext | None | None |
Numérique | SqlDecimal | Decimal, Nullable<Decimal> |
nvarchar | SqlChars, SqlString SQLChars est une meilleure correspondance pour le transfert et l’accès aux données, et SQLString est une meilleure correspondance pour effectuer des opérations de chaîne. |
String, Char[] |
nvarchar(1), nchar(1) | SqlChars, SqlString | Char, String, Char[], Char Nullable<> |
real | SqlSingle (la plage de SqlSingle, cependant, est supérieure à réelle) | Single, Nullable<Single> |
rowversion | Aucune | Byte[] |
smallint | SqlInt16 | Int16, Nullable<Int16> |
smallmoney | SqlMoney | Decimal, Nullable<Decimal> |
sql_variant | Aucune | Object |
table | None | None |
texte | None | None |
time | Aucune | TimeSpan, TimeSpan Nullable<TimeSpan> |
timestamp | None | None |
tinyint | SqlByte | Octets, octets nullables<> |
uniqueidentifier | SqlGuid | Guid, Guid nullable<> |
Type défini par l’utilisateur (UDT) | Aucune | 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[], Octet Nullable<> |
varchar | None | None |
xml | SqlXml | Aucune |
Conversion automatique de types de données avec les paramètres de sortie
Une méthode CLR peut retourner des informations au code ou au programme 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 dans l’espace de noms System.Data.SqlTypes , et 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
Une fois l’assembly généré et 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 Server int en tant que 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 automatiquement converti en type de données int et retourné au programme appelant.
Toutefois, tous les types de données CLR ne peuvent pas être convertis automatiquement en types de données SQL Server équivalents par le biais d’un paramètre out. Le tableau suivant répertorie ces exceptions.
Type de données CLR (SQL Server) | Type de données SQL Server |
---|---|
Décimal | smallmoney |
SqlMoney | SMALLMONEY |
Décimal | devise |
DateTime | smalldatetime |
SQLDateTime | smalldatetime |
Historique des modifications
Mise à jour du contenu |
---|
Ajout de types SqlGeography, SqlGeometry et SqlHierarchyId à la table de mappage. |