mysql - 如何在 MySQL 中创建存储过程

标签 mysql stored-procedures

我的 table 是

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 条件,则不会出现错误。每次执行过程 ti 在 end if 中都说错误。我在谷歌搜索但对此一无所知。声明变量有问题。如果我复制表格 mysql 文档也不起作用。这是为什么? 请帮我 1. mysql存储过程下声明变量的正确方法是什么, 2.如何在mysql存储过程中写if条件。 谢谢

最佳答案

mysql 和 mssql 之间有很多差异。声明的变量不应包含'@',所有语句必须终止,+是算术运算符,如果您的程序有多个语句,则必须在前后设置分隔符。 延伸阅读 How to declare a variable in MySQL? https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html

关于mysql - 如何在 MySQL 中创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50387042/

相关文章:

php - MySQL存储过程或函数以特定格式返回人名

oracle - 创建 Oracle 过程

c# - 从 C# 调用时,存储过程不返回记录,但在 SSMS 中工作

php - Codeigniter 根据 id 返回用户名

java - 如何从具有 IN 和 OUT 参数的 Hibernate 调用存储过程

mysql - 优化mysql查询-select内连接和exists

MySQL:从存储过程重新安排事件?

mysql - 调用存储过程时出错

php - 从 MySQL 存储和检索 $_GET 语句

php - 如何在 Codeigniter 中将文本文件中的制表符分隔数据导入 MySQL 数据库?