2009-01-15 6 views
14

¿Es posible determinar el tipo de una variable local en tiempo de ejecución en TSQL?SQL Server 2005: Determine el tipo de datos de la variable

Por ejemplo, decir que quería hacer algo en este sentido:

IF (@value IS INTEGER) 

O

IF (TYPEOF(@value) = <whatever>) 

¿Alguien sabe de alguna manera de lograr esto?

EDITAR: Esto no es para una tarea específica, esta es más una pregunta de conocimiento general. Aprecio las respuestas que indican que el tipo debe ser conocido ya que se declara dentro del mismo lote, tengo curiosidad sobre si el tipo se puede determinar en tiempo de ejecución.

Respuesta

27

plazo esto

declare @d int 

select @d = 500 

if cast(sql_variant_property(@d,'BaseType') as varchar(20)) = 'int' 
print 'yes' 
else 
print 'no' 
+0

Nota: En mi versión de SQL Server, acabo de recibir un error al ejecutar sql_variant_property() en una variable en lugar de en una columna. –

-1

No lo creo, PERO es una variable local, por lo que lo declaro en el mismo procedimiento para que sepa el tipo de todos modos, ¿o me falta algo?

+0

Con la @SQLMenace enfoque esbozado más arriba, puede averiguar los tipos de retorno para algunas funciones incorporadas. Consulte este [post] (http://climenco.blogspot.com/2014/04/t-sql-coalesce-returns-int.html) para ver un ejemplo rápido. –

Cuestiones relacionadas