MySQL存储过程表插入错误

标签 mysql stored-procedures

我有以下基本表:

    create table hobbies (
    id int primary key auto_increment,
    name varchar(32) unique);

我正在尝试创建一个存储过程来在此表中插入新行,如下所示:

    delimiter //
    create procedure add_hobby(hobby varchar(32))
    begin
    insert into hobbies(name) values(hobby);
    end
    delimiter //

    call add_hobby('randomHobby');

当我调用上述过程时,我收到消息“发生意外错误”。我正在 db-fiddle.com、MySQL 版本 8.0 上运行查询。如果我做错了什么或错过了什么,有人可以提供一些指导吗?我可以提到该过程带有选择操作并且没有参数有效。非常感谢。

最佳答案

您需要首先设置分隔符,然后在末尾重置它 对于您的参数,您需要设置它们是 IN 或 out 的天气,然后是名称和类型

delimiter //
create procedure add_hobby(IN hobby varchar(32))
begin
insert into hobbies(name) values(hobby);
end//
delimiter ;

关于MySQL存储过程表插入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54377142/

相关文章:

sql - 我应该使用平面表还是规范化数据库?

php - 在 MySQL 数据库中有很多空值可以吗?

mysql - 如何补偿 MySQL TIMESTAMPDIFF 溢出

MySQL检查是否有任何行有 future 的日期

MySQL 和动态查询错误 1064

sql-server - SqlServer - 选项重新编译并行执行行为

sql - 如何增加 SQL 查询/存储过程的百分比?

MySQL 5.7 安装错误 `mysqld: Can' t 创建/写入文件 '/var/lib/mysql/is_writable' `

stored-procedures - Cassandra中有存储过程的概念吗?

sql-server - 选择没有光标的列的总和