2009-01-15 9 views
14

Est-il possible de déterminer le type d'une variable locale lors de l'exécution dans TSQL?SQL Server 2005: Détermination du type de données de la variable

Par exemple, disons que je voulais faire quelque chose le long de ces lignes:

IF (@value IS INTEGER) 

Ou

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

Est-ce que quelqu'un sait de toute façon d'y parvenir?

EDIT: Ce n'est pas pour une tâche spécifique, c'est plus d'une question de connaissances générales. J'apprécie les réponses qui indiquent que le type devrait être connu puisqu'il est déclaré dans le même lot, je suis curieux de savoir si le type peut être déterminé à l'exécution.

Répondre

27

cette course

declare @d int 

select @d = 500 

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

Remarque: Dans ma version de SQL Server, je reçois une erreur exécutant sql_variant_property() sur une variable au lieu d'une colonne. –

-1

Je ne pense pas - MAIS c'est une variable locale donc le déclare dans la même procédure afin que vous connaissiez le type de toute façon - ou est-ce que je manque quelque chose?

+0

Avec la @SQLMenace approche décrite ci-dessus, vous pouvez trouver des types de retour pour certaines fonctions intégrées. Veuillez consulter ce [post] (http://climenco.blogspot.com/2014/04/t-sql-coalesce-returns-int.html) pour un exemple rapide. –

Questions connexes