2009-01-15 13 views
14

Czy jest możliwe określenie typu zmiennej lokalnej w czasie wykonywania w TSQL?SQL Server 2005: Określ typ danych zmiennej

Załóżmy, że chciałem zrobić coś wzdłuż tych linii:

IF (@value IS INTEGER) 

Albo

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

Czy ktoś zna jakiś sposób, aby osiągnąć ten cel?

EDYCJA: To nie jest dla konkretnego zadania, to raczej ogólne pytanie. Doceniam odpowiedzi, które wskazują, że typ powinien być znany, ponieważ jest on zadeklarowany w tej samej partii, jestem ciekawy, czy typ można określić w czasie wykonywania.

Odpowiedz

27

uruchomić ten

declare @d int 

select @d = 500 

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

Uwaga: W mojej wersji programu SQL Server po prostu pojawia się błąd z uruchomieniem sql_variant_property() na zmiennej zamiast w kolumnie. –

-1

Nie sądzę - ale jest to zmienna lokalna, więc deklaruję ją w tej samej procedurze, abyś znał typ w każdym razie - czy też czegoś mi brakuje?

+0

z @SQLMenace opisane powyżej podejście można znaleźć na typy powrotne dla niektórych wbudowanych funkcji. Aby uzyskać szybki przykład, patrz [post] (http://climenco.blogspot.com/2014/04/t-sql-coalesce-returns-int.html). –

Powiązane problemy