首页 > 解决方案 > 如何在 MySQL 中创建存储过程

问题描述

我的桌子是

create table employee(
id int(10) auto_increment primary key,
name varchar(100),
addressId int(10)
);
go
create table address(
id varchar(10) auto_increment primary key,
name varchar(100)
);

这是我的程序

create procedure insert_employee(IN emp_name varchar(100),IN emp_address varchar(100))
begin


    DECLARE @addressId varchar(10);
    SELECT @addressId:=id from address where name LIKE '%'+emp_address+'%';


    IF @addressId = ''
    THEN 
        set @addressId= 'DBS-2136';-- It will come form function
        INSERT INTO address values(@addressId,emp_address);
    END IF

    INSERT INTO employee values(emp_name,@addressId);
END

我不明白有什么问题。如果我在 ms sql server 中编写这种类型的 if 条件,则不会出现错误。每次执行该程序时,如果结束,则说错误。我在谷歌搜索,但对此一无所知。声明变量有问题。如果我复制表格 mysql 文档也不起作用。这是为什么?请帮帮我1.在mysql存储过程下声明变量的正确方法是什么,2.如何在mysql存储过程中编写if条件。谢谢你

标签: mysqlstored-procedures

解决方案


mysql和mssql之间有很多区别。声明的变量不应包含“@”,所有语句都必须终止,+ 是算术运算符,如果您的过程有多个语句,则必须在前后设置分隔符。进一步阅读 如何在 MySQL 中声明一个变量? https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html


推荐阅读