Я пытаюсь передать имя таблицы в свою mysql хранимую процедуру для использования этого sproc для выбора прочь различных таблиц, но это не работает...
это что я "m попытка:
CREATE PROCEDURE `usp_SelectFromTables`(
IN TableName varchar(100)
)
BEGIN
SELECT * FROM @TableName;
END
Я также попробовал его w/o знак, и это просто говорит мне, что TableName не существует..., который я знаю :)
Это зависит от СУБД, но нотация обычно требует динамического SQL и сталкивается с проблемой, что возвращаемые значения функции зависят от входных данных при ее выполнении. Это приводит систему в замешательство. Как общее правило (и поэтому, вероятно, могут быть исключения), СУБД не позволяют использовать заполнители (параметры) для структурных элементов запроса, таких как имена таблиц или столбцов; они позволяют указывать только значения, такие как значения столбцов.
Некоторые СУБД поддерживают хранимые процедуры, которые позволяют создать строку SQL и затем работать с ней, используя "подготовить", "выполнить немедленно" или аналогичные операции. Обратите внимание, однако, что вы внезапно становитесь уязвимы для атак SQL-инъекций - кто-то, кто может выполнить вашу процедуру, может частично контролировать, какой SQL будет выполняться.