Asignar datos de parámetros CLR
Se aplica a: SQL Server
En la tabla siguiente se enumeran los tipos de datos de Microsoft 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 Microsoft .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, booleano que admite<valores NULL> |
char | None | None |
cursor | None | None |
date | SqlDateTime | DateTime, DateTime que acepta<valores NULL> |
datetime | SqlDateTime | DateTime, DateTime que acepta<valores NULL> |
datetime2 | None | DateTime, DateTime que acepta<valores NULL> |
DATETIMEOFFSET | None | DateTimeOffset, DateTimeOffset que acepta valores<NULL> |
decimal | SqlDecimal | Decimal, Decimal que acepta<valores NULL> |
float | SqlDouble | Double, Nullable<Double> |
geography | SqlGeography SqlGeography se define en Microsoft.SqlServer.Types.dll, que se instala con SQL Server y se puede descargar desde el paquete de características de SQL Server. |
None |
geometry | SqlGeometry SqlGeometry se define en Microsoft.SqlServer.Types.dll, que se instala con SQL Server y se puede descargar desde el paquete de características de SQL Server. |
None |
hierarchyid | SqlHierarchyId SqlHierarchyId se define en Microsoft.SqlServer.Types.dll, que se instala con SQL Server y se puede descargar desde el paquete de características de SQL Server. |
None |
image | None | None |
int | SqlInt32 | Int32, Nullable<Int32> |
money | SqlMoney | Decimal, Decimal que acepta<valores NULL> |
nchar | SqlChars, SqlString | String, Char[] |
ntext | None | None |
numeric | SqlDecimal | Decimal, Decimal que acepta<valores NULL> |
nvarchar | SqlChars, SqlString SQLChars es una mejor coincidencia para la transferencia y el acceso de datos, y SQLString es una mejor coincidencia para realizar operaciones de cadena. |
String, Char[] |
nvarchar(1), nchar(1) | SqlChars, SqlString | Char, String, Char[], Nullable<char> |
real | SqlSingle (el intervalo de SqlSingle, sin embargo, es mayor que real) | Single, NULLable<Single> |
rowversion | None | Byte[] |
smallint | SqlInt16 | Int16, Nullable<Int16> |
smallmoney | SqlMoney | Decimal, Decimal que acepta<valores NULL> |
sql_variant | None | Object |
table | None | None |
text | None | None |
time | None | TimeSpan, TimeSpan que acepta<valores NULL> |
timestamp | None | None |
tinyint | SqlByte | Byte, Byte que acepta<valores NULL> |
uniqueidentifier | SqlGuid | Guid, Guid que acepta<valores NULL> |
Tipo definido por el usuario (UDT) | None | 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[], byte que acepta<valores NULL> |
varchar | None | None |
xml | SqlXml | None |
Conversión automática de tipos de datos con parámetros OUT
Un método CLR puede devolver información al código o programa de llamada marcando un parámetro de entrada con el modificador out (Microsoft Visual C#) o< Out()> ByRef (Microsoft Visual Basic) 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, Una conversión de tipos se produce automáticamente cuando el método CLR devuelve el tipo de datos.
Por ejemplo, el siguiente procedimiento almacenado CLR tiene un parámetro de entrada del tipo de datos CLR SqlInt32 marcado 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
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 equivalentes de SQL Server 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 |
Historial de cambios
Contenido actualizado |
---|
Se agregaron tipos SqlGeography, SqlGeometry y SqlHierarchyId a la tabla de asignación. |