Функции MySql: преобразование VARCHAR в фактическое имя таблицы для использования в операторе SELECT - PullRequest
0 голосов
/ 23 ноября 2011

Как использовать параметры функции в реальном операторе SELECT Пример:

CREATE FUNCTION GetDefaultLangText(tableName VARCHAR(50), fieldName VARCHAR(50)) 
RETURNS VARCHAR(200) DETERMINISTIC
BEGIN  
Select fieldName from tableName
END

Это не работает, это говорит мне, что tableName не существует, что, конечно, верно, но я действительно хочучтобы подключить фактическое значение в переменной tableName (а также fieldName)

Ответы [ 3 ]

0 голосов
/ 23 ноября 2011

Нечто подобное было опубликовано некоторое время назад: используйте переменную для имени таблицы в mysql sproc

0 голосов
/ 23 ноября 2011

Вы можете использовать динамический sql, например:

PREPARE stmt FROM @sqltext;EXECUTE stmt USING @temptable;DEALLOCATE PREPARE stmt;

sqltext - это строка, которая может содержать запрос

0 голосов
/ 23 ноября 2011

Переменные в MySQL должны иметь префикс @, в противном случае они рассматриваются как необработанные имена полей / таблиц, поэтому ...

SELECT @fieldName FROM @tableName

однако этот синтаксис недопустим.Имена полей и таблиц не могут быть вставлены в запрос через переменные следующим образом: Динамическое изменение имени хранимой процедуры MySQL таблицы .Таким образом, изменение оператора запроса не решит большую проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...