我的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
我不明白是什么问题。如果我在mssqlserver中编写这种类型的if条件,则不会出现错误。每次执行程序ti最后都说错误if。我已经在谷歌搜索,但没有这个想法。declare变量有问题。如果我复制表单mysql文档也不管用。为什么?请帮帮我。在mysql存储过程下声明变量的正确方法是什么,2。如何在mysql存储过程中编写if条件。谢谢您
2条答案
按热度按时间ryhaxcpt1#
mysql和mssql有很多不同之处。声明的变量不应包括“@”,所有语句都必须终止,+是算术运算符,如果过程有多个语句,则必须在前后设置分隔符。进一步阅读如何在mysql中声明变量?https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html
kfgdxczn2#
来自mysql参考手册
如果。。。end if块与存储程序中使用的所有其他流控制块一样,必须以分号终止