我的桌子是
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存储过程中写入条件。 谢谢
答案 0 :(得分:1)
mysql和mssql之间有很多区别。声明的变量不应包含' @',必须终止所有语句,+是算术运算符,如果过程有多个语句,则必须在前后设置分隔符。 进一步阅读 How to declare a variable in MySQL? https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html
答案 1 :(得分:0)
IF ... END IF块与存储程序中使用的所有其他流控制块一样,必须以分号结束
IF @addressId = ''
THEN
set @addressId= 'DBS-2136';-- It will come form function
INSERT INTO address values(@addressId,emp_address);
END IF;