我目前正在学习MySQL,并试图找出如何为输入值动态编码。
DELIMITER //
CREATE PROCEDURE add_user(
IN username VARCHAR (16),
IN pass VARCHAR (255),
IN email VARCHAR(255),
IN fname VARCHAR (32),
IN lname VARCHAR (32),
IN age INT )
BEGIN
INSERT INTO users (username, pass, email, fname, lname, age)
VALUES (@username, @pass, @email, @fname, @lname, @age);
INSERT INTO usershobbies (u_id, h_id)
VALUES (LAST_INSERT_ID(), '1');
END; //
DELIMITER ;
当我调用该过程并插入值时,出现错误消息:
call add_user('bugsbunny', 'Carrot1000', 'bugs@bunny.com', 'Bugs','Bunny', '80');
#1054-“字段列表”中的未知列“年龄”
感谢您的任何反馈。谢谢!
答案 0 :(得分:0)
此错误告诉您表age
中没有列users
。您将需要检查表的定义(问题中未提供)。
此外,在MySQL中使用输入/输出参数时,不应在其前加上@
作为前缀。我喜欢给他们一个字符串前缀(例如p_
),以免与其他乱序字符串(例如列名)产生歧义:
CREATE PROCEDURE add_user(
IN p_username VARCHAR (16),
IN p_pass VARCHAR (255),
IN p_email VARCHAR(255),
IN p_fname VARCHAR (32),
IN p_lname VARCHAR (32),
IN p_age INT
)
BEGIN
INSERT INTO users (username, pass, email, fname, lname)
VALUES (p_username, p_pass, p_email, p_fname, p_lname);
INSERT INTO usershobbies (u_id, h_id) VALUES (LAST_INSERT_ID(), '1');
END;