Asignación de datos de parámetros CLR
Se aplica a:SQL Server
En la tabla siguiente se enumeran los tipos de datos de SQL Server, sus equivalentes en Common Language Runtime (CLR) para SQL Server en el espacio de nombres System.Data.SqlTypes
y sus equivalentes CLR nativos en .NET Framework.
Tipo de datos de SQL Server | Tipo (en System.Data.SqlTypes o Microsoft.SqlServer.Types ) |
Tipo de datos CLR (.NET Framework) |
---|---|---|
bigint | SqlInt64 |
Int64 , Nullable<Int64> |
binary |
SqlBytes , SqlBinary |
Byte[] |
bit | SqlBoolean |
Boolean , Nullable<Boolean> |
char | Ninguno | Ninguno |
cursor | Ninguno | Ninguno |
date | SqlDateTime |
DateTime , Nullable<DateTime> |
datetime | SqlDateTime |
DateTime , Nullable<DateTime> |
datetime2 | Ninguno |
DateTime , Nullable<DateTime> |
datetimeoffset | None |
DateTimeOffset , Nullable<DateTimeOffset> |
decimal | SqlDecimal |
Decimal , Nullable<Decimal> |
float | SqlDouble |
Double , Nullable<Double> |
geography |
SqlGeography
1 |
Ninguno |
geometry |
SqlGeometry
1 |
Ninguno |
hierarchyid |
SqlHierarchyId
1 |
Ninguno |
image | Ninguno | Ninguno |
int | SqlInt32 |
Int32 , Nullable<Int32> |
money | SqlMoney |
Decimal , Nullable<Decimal> |
nchar |
SqlChars , SqlString |
String , Char[] |
ntext | Ninguno | Ninguno |
numeric | SqlDecimal |
Decimal , Nullable<Decimal> |
nvarchar |
SqlChars , SqlString SQLChars es una mejor coincidencia para la transferencia y el acceso a datos, y SQLString es una mejor coincidencia para realizar operaciones de String . |
String , Char[] |
nvarchar(1), nchar(1) |
SqlChars , SqlString |
Char , String , Char[] , Nullable<char> |
real |
SqlSingle (sin embargo, el intervalo de SqlSingle es mayor que real ) |
Single , Nullable<Single> |
rowversion | Ninguno | Byte[] |
smallint | SqlInt16 |
Int16 , Nullable<Int16> |
smallmoney | SqlMoney |
Decimal , Nullable<Decimal> |
sql_variant | Ninguno | Object |
table | Ninguno | Ninguno |
text | Ninguno | Ninguno |
time | Ninguno |
TimeSpan , Nullable<TimeSpan> |
timestamp | Ninguno | Ninguno |
tinyint | SqlByte |
Byte , Nullable<Byte> |
uniqueidentifier | SqlGuid |
Guid , Nullable<Guid> |
Tipo definido por el usuario (UDT) | Ninguno | La misma clase que está enlazada al tipo definido por el usuario en el mismo ensamblado o en un ensamblado dependiente. |
varbinary |
SqlBytes , SqlBinary |
Byte[] |
varbinary(1), binary(1) |
SqlBytes , SqlBinary |
byte , Byte[] , Nullable<byte> |
varchar | Ninguno | Ninguno |
xml | SqlXml |
Ninguno |
1 Definido en Microsoft.SqlServer.Types.dll
, que se instala con SQL Server y se puede descargar desde el paquete de características de SQL Server .
Conversión automática de tipos de datos con parámetros de salida
Un método CLR puede devolver información al código o programa de llamada marcando un parámetro de entrada con el modificador de out
(C#) o <Out()> ByRef
(Visual Basic .NET). Si el parámetro de entrada es un tipo de datos CLR en el espacio de nombres System.Data.SqlTypes
y el programa de llamada especifica su tipo de datos equivalente de SQL Server como parámetro de entrada, se produce automáticamente una conversión de tipos cuando el método CLR devuelve el tipo de datos.
Por ejemplo, el siguiente procedimiento almacenado CLR tiene un parámetro de entrada de SqlInt32
tipo de datos CLR marcado con out
(C#) o <Out()> ByRef
(Visual Basic):
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ ... }
Una vez compilado y creado el ensamblado en la base de datos, el procedimiento almacenado se crea en SQL Server con el siguiente transact-SQL, que especifica un tipo de datos de SQL Server de int como parámetro OUTPUT:
CREATE PROCEDURE PriceSum
(@sum INT OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum;
Cuando se llama al procedimiento almacenado CLR, el tipo de datos SqlInt32
se convierte automáticamente en un tipo de datos int y se devuelve al programa de llamada.
Sin embargo, no todos los tipos de datos CLR se pueden convertir automáticamente a sus tipos de datos de SQL Server equivalentes a través de un parámetro out
. En la tabla siguiente se enumeran estas excepciones.
Tipo de datos CLR (SQL Server) | Tipo de datos de SQL Server |
---|---|
Decimal |
smallmoney |
SqlMoney |
smallmoney |
Decimal |
money |
DateTime |
smalldatetime |
SQLDateTime |
smalldatetime |
Contenido relacionado
- tipos de datos de SQL Server en el de .NET Framework