存储过程CONCAT()错误代码1054,未知列

时间:2014-08-02 17:52:11

标签: mysql insert procedure concat

提前感谢您的帮助。你们真棒。

在存储过程中遇到CONCAT()问题。尝试使用变量创建INSERT INTO。

ERROR CODE 1054,字段列表中的未知栏“牛奶”。

Milk是要插入的值,而不是列。

这是代码:

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

1 个答案:

答案 0 :(得分:2)

您需要引用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,
    '\')'
);