mysql-Fehler mit variable als Tabellennamen
Warum bin ich immer diese Fehlermeldung?
CREATE DEFINER=`root`@`localhost` PROCEDURE `selectrecords`(tablename varchar(50))
begin
set @table_name=tablename;
set @sql_text=concat('Select * from @table_name');
prepare statement from @sql_text;
execute statement;
deallocate prepare statement;
end
Fehler:
....to use near '@table_name' at line 1
Mein code ist korrekt, aber ich verstehe nicht warum....
- Ich glaube nicht, können Sie Variablen für Tabellennamen in dynamic sql. In Oracle können Sie sicher nicht bei allen. Ich glaube, Sie haben verkettet, siehe Zeugen Jehovas Antwort
- Was, wenn ich mit "delete frrom....wo" , den Zeugen Jehovas, die Antwort ist noch akzeptabel?
- ja, ich denke, dass er so ziemlich alle deine Fragen beantwortet.
- Ich bin immer Fehler mit diesem: "set @sql_text = concat('Delete from ', Tabellenname, 'WHERE id = pid');" "pid int"--> enthalten ist, in parameter..Irgendeine Hilfe?
- fügen Sie ein Leerzeichen vor WHERE
- ich hatte wirklich einen Fehler in der Where-Klausel Teil.
- lassen Sie uns weiter, diese Diskussion im chat
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke du meinst,
sogar in dynamische sql, können Sie keine parametrisierten Tabelle-Namen, Spaltennamen, so dass Ihre einzige Wahl ist, zu verketten, in die mit der Zeichenfolge. Nur die Werte können in ein Platz-Halter.
UPDATE 1
SET @sql = 'Delete from tablename where id = ?'
Sie können den Wert deridnumber
in einem Platzhalter.idnumber
werden, einen zweiten parameter des Verfahrens? Oder ist es von der globalen vars irgendwie?