TSQL Variable in select nicht vorhanden

05/08/2009 - 11:07 von Thomas Weiler | Report spam
Hallo,

SQL Server 2000

ich habe hier eine Schleife, in der ich verschiedene Tabellennamen in
die Variable @akttabe schreibe. Ein Count darauf möchte ich nun gerne in
die Variable @anzsaetze schreiben und diese ausgeben.

snip -

FETCH NEXT FROM tables_cursor INTO @akttabe
WHILE (@@FETCH_STATUS <> -1)
BEGIN
select @anzsaetze = count(*) from @akttabe
exec('print ''' + @akttabe + ' ' + @anzsaetze + '''')
FETCH NEXT FROM tables_cursor INTO @akttabe
END

snap -

Nun kommt die Meldung:

Die Variable '@akttabe' muss deklariert werden. (bezogen auf das select
Statement)

Anscheinend wird diese in einem select anders behandelt wie direkt in
der Schleife. Wenn ich nàmlich das select rausnehme und nur exec('print
''' + @akttabe + ''') in die Schleife setze, werden alle Tabellennamen
korrekt ausgegeben. Wenn ich den obigen Code mit einem statischen
Tabellennamen ohne Variable ablaufen lasse (bsp. select @anzsaetze =
count(*) from kunden ) , wird auch alles korrekt ausgegeben.

Wie kann ich die Variable in dem select Statement verwenden, so dass ich
das Ergebnis des selects in eine für die Funktion gültige Variable
schreiben kann?

Danke für alle Antworten.
 

Lesen sie die antworten

#1 Christa Kurschat
05/08/2009 - 11:35 | Warnen spam
Hallo Thomas,

"Thomas Weiler" schrieb im Newsbeitrag
news:4a794bbe$0$30233$
Hallo,

SQL Server 2000

ich habe hier eine Schleife, in der ich verschiedene Tabellennamen in die
Variable @akttabe schreibe. Ein Count darauf möchte ich nun gerne in die
Variable @anzsaetze schreiben und diese ausgeben.

snip -

FETCH NEXT FROM tables_cursor INTO @akttabe
WHILE (@@FETCH_STATUS <> -1)
BEGIN
select @anzsaetze = count(*) from @akttabe




Sso geht das schon mal gar nicht.

exec('print ''' + @akttabe + ' ' + @anzsaetze + '''')
FETCH NEXT FROM tables_cursor INTO @akttabe
END

snap -

Nun kommt die Meldung:

Die Variable '@akttabe' muss deklariert werden. (bezogen auf das select
Statement)




Ist die Variable denn deklariert?

Anscheinend wird diese in einem select anders behandelt wie direkt in der
Schleife. Wenn ich nàmlich das select rausnehme und nur exec('print ''' +
@akttabe + ''') in die Schleife setze, werden alle Tabellennamen korrekt
ausgegeben. Wenn ich den obigen Code mit einem statischen Tabellennamen
ohne Variable ablaufen lasse (bsp. select @anzsaetze = count(*) from
kunden ) , wird auch alles korrekt ausgegeben.




Das liegt aber daran, daß die Abfrag emit einem statischen Tabellennamen
geht.
Ein Select auf eine Variable geht nicht.

Wie kann ich die Variable in dem select Statement verwenden, so dass ich
das Ergebnis des selects in eine für die Funktion gültige Variable
schreiben kann?



Was willst Du denn erreichen?

Gruß
Christa
Access-FAQ: http://www.donkarl.com
SQL-Server-FAQ: www.sqlfaq.de
InsideSql: www.insidesql.org

Ähnliche fragen