2009-01-15 9 views
14

Kann der Typ einer lokalen Variablen zur Laufzeit in TSQL bestimmt werden?SQL Server 2005: Ermitteln des Datentyps der Variablen

Zum Beispiel sagen, dass ich etwas in dieser Richtung machen wollte:

IF (@value IS INTEGER) 

Oder

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

Kennt jemand eine Möglichkeit, dies zu erreichen?

EDIT: Dies ist nicht für eine bestimmte Aufgabe, das ist eher eine Frage des Allgemeinwissens. Ich schätze Antworten, die darauf hinweisen, dass der Typ bekannt sein sollte, da er innerhalb desselben Stapels deklariert ist. Ich bin neugierig, ob der Typ zur Laufzeit bestimmt werden kann.

Antwort

27

Lauf dieses

declare @d int 

select @d = 500 

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

Hinweis: In meiner Version von SQL Server erhalte ich nur einen Fehler beim Ausführen von sql_variant_property() für eine Variable anstelle einer Spalte. –

-1

Ich denke nicht - ABER es ist eine lokale Variable also deklarieren Sie es in der gleichen Prozedur, so dass Sie den Typ sowieso wissen würden - oder fehlt mir etwas?

+0

Mit dem Ansatz @SQLMenace oben skizzierten Sie können für einige integrierte Funktionen Rückgabetypen erfahren. Bitte sehen Sie diese [Post] (http://climenco.blogspot.com/2014/04/t-sql-coalesce-returns-int.html) für ein schnelles Beispiel. –