Tabellenname in Variable

katsud

Neuer Benutzer
Beiträge
3
Servus, zusammen!

Ich habe in meiner DB Tabellen, deren Namen das Jahr sind, deren Daten sie beinhalten.

Wenn ich nun eine Abfrage setzen möchte, die die Tabelle des aktuellen Jahres trifft, wollte ich das so machen:

SET @Jahr = year(curtime());
SET @s = CONCAT('select * from ',@Jahr);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;


Das wird mir von MYSQL mit einem Syntaxfehler quittiert.

Wenn ich zur Probe dies laufen lasse:

SET @Jahr = year(curtime());
SET @s = CONCAT('select * from ',@Jahr);
SELECT @s;


bekomme ich genau meinen Select string 'Select * from 2017' zu sehen, den ich brauche

Daraus müsste der Prepare doch was Vernünftiges basteln können oder?

Vielleicht hat irgendjemand eine gute Idee...?

Vielen nachweihnachtlichen Dank!

Martin
 
Werbung:
Das geht so nicht. Der String müßte dynamisch ausgeführt werden, in PostgreSQL z.B. innerhalb einer pl/pgsql-Funktion und EXECUTE. Prepared Statements sind was anderes.

Deine Tabellennamen zeugen, nebenbei, von einem massiven Unverständniss von SQL und Datenbanken.
 
Zurück
Oben