mysql - 如何在 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条件。谢谢你
解决方案
mysql和mssql之间有很多区别。声明的变量不应包含“@”,所有语句都必须终止,+ 是算术运算符,如果您的过程有多个语句,则必须在前后设置分隔符。进一步阅读 如何在 MySQL 中声明一个变量? https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html
推荐阅读
- java - DateTimeParseException: Text '2019-08-13T07:29:12.000+0000' could not be parsed, unparsed text found at index 23
- r - Why are `invisible` and `capture.output` insufficient in removing both concatenated and diagnostic messages in R?
- scala - 无法自动生成密钥表
- slice - 如何将切片组合/合并为每个视频帧一个切片(h.264)
- audio - 转换旧视频游戏的音频
- javascript - 发射在 chrome 上工作正常,但在 firefox 上不起作用
- php - 使用正则表达式环视将 HTML 插入到特定位置的字符串中
- python - 未找到关键字参数“{'pk': ''}' 的“通信详细信息”的反向。尝试了 1 种模式:['communication/communication/(?P
[0-9]+)/$'] - php - Foreach 循环没有根据列名回显正确的文本
- php - 我应该在所有相关表中包含自动增量 id 吗?