MS SQL: Wie verwende ich eine Variable richtig?

Hallo,

ich habe zunächst eine Tabelle tbl1a und will deren Werte aus Feld1 in eine andere Tabelle einsetzen:
INSERT … SELECT tbl1a.Feld1 …

Nun habe ich viele Tabellen: tbl1a, tbl2a, …, tblNa.

Die Abfrage für jede Tabelle neu zu schreiben, ist mir zu aufwendig. Ich definiere also also einen Zähler: @zaehler int, der durchläuft 1 bis N.

Nun sollte gehen:
INSERT … SELECT tbl’ + STR(@zaehler, 1, 0) + 'a.Feld1 …

Tut es aber nicht. Hochkomma falsch gesetzt, Anführungszeichen statt Hochkomma, Klammern falsch oder vergessen? Ich habe alles Mögliche probiert, sehe aber wohl den Wald vor lauter Bäumen nicht.

Vielleicht hat jemand einen Tip. Vielen Dank!

Moin,

gib die Zeichenkette mit debug.print aus, dann sollte der Fehler zu sehen sein.

Gruß
Ralf

Hallo Ralf,

vielen Dank für Deine Antwort. Der Befehl debug.print ist allerdings im SQL-Server nicht vorgesehen.

Das Meldungsfenster gibt die für mich wenig erhellende Meldung aus:

Meldung 102, Ebene 15, Status 1, Zeile 13
Falsche Syntax in der Nähe von ‚a‘.

oder auch je nach Position der Hochkommata :

Meldung 4104, Ebene 16, Status 1, Zeile 12
Der mehrteilige Bezeichner ‚dbo.tbl‘ konnte nicht gebunden werden.
Meldung 4104, Ebene 16, Status 1, Zeile 12
Der mehrteilige Bezeichner ‚a.Feld1‘ konnte nicht gebunden werden.

Gruß
Peter

Du kannst an der Stelle keine Variable verwenden.

Du musst die Anweisung komplett als String zusammenbauen und mit EXECUTE bzw. sp_executesql ausführen lassen.

DECLARE @tablename varchar(50)
DECLARE @sql varchar(500)
    SET @tablename = ‚test‘
    SET @sql = 'select * from ’ + @tablename
   EXEC sp_executesql @sql

:wave:
KHK

Was hab ich rumgewurschtelt:

Ich habe eine neue Variable definiert, meine Beschreibung da hinein praktiziert, über EXEC ausführen lassen, und schon geht’s.

Der Hinweis von KHK geht in die gleiche Richtung. Der direkte Weg ist der über Umwege. Herzlichen Dank dafür!

Gruß
Peter