Как передать аргумент mysql процедуры в название колонки?

Есть такая процедура:
CREATE DEFINER = 'root'@'%'
PROCEDURE db.admin_change_product(
  IN infield varchar(255),
  IN invalue varchar(255),
  IN inidProduct int
  )
BEGIN
  UPDATE goods g SET g.infield = invalue WHERE g.id = inidProduct;
END


При выполнении выдаёт:
Unknown column 'g.inField' in 'field list'

Пробовал ставить ``:
UPDATE goods g SET `inField` = inValue WHERE `id` = inIdProduct;

То же самое.

В чем может быть проблема?
  • Вопрос задан
  • 384 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
Вы по сути дела пытаетесь сделать динамический запрос (указать имена столбцов, таблиц и т.п. во время выполнения запроса), но так как Вы написали он не будет работать. В MySQL есть только одна возможность создавать динамические запросы - это собирать их в виде строк и потом выполнять например так:
SET @myquery := CONCAT("UPDATE goods SET ", infield, " = ", invalue, " WHERE id = ", inidProduct);
PREPARE myquery FROM @myquery;
EXECUTE myquery;
DEALLOCATE PREPARE myquery;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы