USE `sakila`;
DROP procedure IF EXISTS `change_user_name`;
DELIMITER $$
USE `sakila`$$
CREATE PROCEDURE `change_user_name` (actor_id int, first_name varchar(45), last_name varchar(45))
BEGIN
UPDATE actor SET first_name='first_name', last_name='last_name' WHERE actor_id='actor_id';
END$$
DELIMITER ;
为什么这个程序不起作用,我没有收到来自 mysql workbench 的任何错误消息
最佳答案
我不确定 DELIMITER
部分,但对于函数它应该是这样的:
CREATE PROCEDURE `change_user_name` (actor_id_in int, first_name_in varchar(45), last_name_in varchar(45))
BEGIN
UPDATE actor
SET first_name=first_name_in,
last_name=last_name_in
WHERE actor_id=actor_id_in;
请注意,当您在两个引号“example”中指定文本时,它会将其视为字符串,而不是列。在处理 DBMS 中具有保留字名称的列/表时,您只需使用(反引号/双引号/方括号而不是引号)
关于用于更新行的mysql过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449395/