PLS 帮助 MySql 错误 1054:字段列表中的未知列 'column name'

PLS HELP MySql Error 1054: Unknown column 'column name' in field list

我有这个 table:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `pass` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8

我做了一个这样的存储过程:

create procedure uppdateUser(newname varchar(25), newpass varchar(50), newname2 varchar(25), newpass2 varchar(50))
    -> begin
    -> while name=newname && pass=newpass do
    -> update users set name=newname2, pass=newpass2;
    -> end while;
    -> end

但是当我这样调用过程时出现错误 unknown column name in field list:

call uppdateUser('marky','mark','ice','cube');

我在 Whosebug 上搜索了问题,但没有找到答案。任何人都可以向我解释我的查询中的问题是什么以及如何解决它吗?

我认为问题出在 while 条件中对 namepass 的引用。这些引用无效。没有任何具有这些名称的过程参数或变量。

不清楚您要实现的目标,但我认为不需要 while 循环。

您似乎需要在 UPDATE 语句中使用 WHERE 子句。如果没有 WHERE 子句,UPDATE 语句将更新 table 中的 every 行。而且没有必要 运行 不止一次。

我希望更新语句的格式如下:

 UPDATE users
    SET name  = v_newname
      , pass  = v_newpass
  WHERE name  = v_oldname
    AND pass  = v_oldpass

不过,我还是不太明白你想要达到什么目的。

首先,正确设置您的 UPDATE 语句。找出您要执行的实际 SQL 语句。

一旦你得到它,你就可以将它放入存储过程中。