Хранимая процедура CONCAT() Код ошибки 1054, неизвестный столбец

Заранее спасибо за вашу помощь. Вы, ребята, потрясающие.

возникли проблемы с CONCAT() внутри хранимой процедуры. пытаясь создать INSERT INTO с переменными.

КОД ОШИБКИ 1054, Неизвестный столбец "Молоко" в списке полей.

Молоко - это значение, которое нужно вставить, а не столбец.

Вот КОД:

SET @s = CONCAT('insert into ',USR,' (Product, ProdId, ListName) VALUES (',food_name,',',PRODID,',',LISTID,')');

1 ответ

Решение

Вам нужно процитировать значение food_name:

SET @s = CONCAT('insert into ',USR,' (Product, ProdId, ListName) VALUES (\'',food_name,'\',',PRODID,',',LISTID,')');

Как таковой, MySQL будет видеть значение без кавычек Milk и предположим, что это имя столбца вместо строкового литерала.

Если другие столбцы в списке также являются символьными типами, то вы должны сделать то же самое для этих столбцов. Например, сделав предположение, что ListName также тип символа, ваша процедура будет:

SET @s = CONCAT(
    'insert into ',
    USR,
    ' (Product, ProdId, ListName) VALUES (\'',
    food_name,
    '\',',
    PRODID,
    ',\'',
    LISTID,
    '\')'
);
Другие вопросы по тегам