Tabellenvariable

08/04/2010 - 12:52 von Frank Eichele | Report spam
Hallo zusammen, ich hànge an einem Problem wo ich einfach nicht weiter komme
Ich habe gelesen das es eine Art Variable für Tabellennamen gibt.
Hintergrund ich muss in einem Cursor jeweils pro Durchlauf einen Datensatz
aus einer von zehn Tabellen löschen.
Hierzu würde ich dann die Zeile

Delete from @tablename where @tablename.ID = @Pk_id

gerne nutzen. Nach den Tests ist auch sicher das die Variable gefüllt ist.
Führe ich das Skript aus bekomme ich den Fehler:
Meldung 1087, Ebene 15, Status 2, Zeile 38
Die '@tablename'-Tabellenvariable muss deklariert werden.
Hierrüber kann ich auch im Netz nichts finden. Könnt ihr mir hierbei helfen?
Ich bedanke mich im vorraus und viele Grüße, Frank
 

Lesen sie die antworten

#1 Christoph Muthmann
08/04/2010 - 14:23 | Warnen spam
Frank Eichele wrote:
Hallo zusammen, ich hànge an einem Problem wo ich einfach nicht
weiter komme Ich habe gelesen das es eine Art Variable für
Tabellennamen gibt. Hintergrund ich muss in einem Cursor jeweils pro
Durchlauf einen Datensatz aus einer von zehn Tabellen löschen.
Hierzu würde ich dann die Zeile

Delete from @tablename where @tablename.ID = @Pk_id

gerne nutzen. Nach den Tests ist auch sicher das die Variable gefüllt
ist. Führe ich das Skript aus bekomme ich den Fehler:
Meldung 1087, Ebene 15, Status 2, Zeile 38
Die '@tablename'-Tabellenvariable muss deklariert werden.
Hierrüber kann ich auch im Netz nichts finden. Könnt ihr mir hierbei
helfen? Ich bedanke mich im vorraus und viele Grüße, Frank



Hallo Frank,
da verwechselst Du etwas.

Es gibt Tabellenvariablen
Declare @var table(f1 int, f2 int);
Select * from @var;

Du suchst aber nach dynamischem SQL:
http://www.insidesql.org/beitraege/...-und-segen


Evtl. làßt sich sogar Deine gesamte Cursor-Verarbeitung durch ein paar
Statements eliminieren, aber dafür müßtest Du die gesamte Verarbeitung
ausführlicher schildern.

Einen schönen Tag noch,
Christoph
Microsoft SQL Server MVP
http://www.insidesql.org

Ähnliche fragen