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 条件中对 name
和 pass
的引用。这些引用无效。没有任何具有这些名称的过程参数或变量。
不清楚您要实现的目标,但我认为不需要 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 语句。
一旦你得到它,你就可以将它放入存储过程中。
我有这个 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 条件中对 name
和 pass
的引用。这些引用无效。没有任何具有这些名称的过程参数或变量。
不清楚您要实现的目标,但我认为不需要 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 语句。
一旦你得到它,你就可以将它放入存储过程中。