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

标签 mysql insert procedure concatenation

预先感谢您的帮助。你们太棒了。

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

错误代码 1054,字段列表中存在未知列“牛奶”。

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

这是代码:

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

最佳答案

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

关于mysql - 存储过程 CONCAT() 错误代码 1054,未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097831/

相关文章:

oracle - 如何调用 plsql 过程

sql - 如何跳过插入 db2 中的错误行?

php - 如何在另一个表中选择没有匹配条目的行,即使其中一个表是空的

php - 根据所选有效期,在 1 个月或 3 个月后删除行

php - 从 MySQL 表中选择所有列

c++ - 如何将自定义对象插入到 std::map 中?

node.js - Mongoose:Model.create 和 Collection.insert 有什么区别

Vim 的 '(insert) VISUAL' 模式?

PHP - 计算每天的 SQL 结果

mysql - 制作具有多个参数的mysql程序