如何在mysql中创建存储过程

bxgwgixi  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(315)

我的table是

  1. create table employee(
  2. id int(10) auto_increment primary key,
  3. name varchar(100),
  4. addressId int(10)
  5. );
  6. go
  7. create table address(
  8. id varchar(10) auto_increment primary key,
  9. name varchar(100)
  10. );

这是我的程序

  1. create procedure insert_employee(IN emp_name varchar(100),IN emp_address varchar(100))
  2. begin
  3. DECLARE @addressId varchar(10);
  4. SELECT @addressId:=id from address where name LIKE '%'+emp_address+'%';
  5. IF @addressId = ''
  6. THEN
  7. set @addressId= 'DBS-2136';-- It will come form function
  8. INSERT INTO address values(@addressId,emp_address);
  9. END IF
  10. INSERT INTO employee values(emp_name,@addressId);
  11. END

我不明白是什么问题。如果我在mssqlserver中编写这种类型的if条件,则不会出现错误。每次执行程序ti最后都说错误if。我已经在谷歌搜索,但没有这个想法。declare变量有问题。如果我复制表单mysql文档也不管用。为什么?请帮帮我。在mysql存储过程下声明变量的正确方法是什么,2。如何在mysql存储过程中编写if条件。谢谢您

ryhaxcpt

ryhaxcpt1#

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

kfgdxczn

kfgdxczn2#

来自mysql参考手册
如果。。。end if块与存储程序中使用的所有其他流控制块一样,必须以分号终止

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

相关问题