存储过程开始与结束符号
BEGIN .... END
变量赋值
SET @p_in=1
变量定义
DECLARE l_int int unsigned default 4000000
创建mysql存储过程,存储函数:
create procedure 存储过程名(参数)
存储过程体
create function 存储函数名(参数)
调用存储过程
call sp_name[(传参)]
=======================================================================
MYSQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:
CREATE PROCEDURE 存储过程名([[IN | OUT | INOUT] 参数名 数据类型…])
- IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
- OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
- INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
注意:
1.如果存储过程没有参数,也必须在过程名后面写上小括号
CREATE PROCEDURE sp_name ([proc_parameter[…]])
2.确保参数的名字不等于列的名字,否则在过程体中,参数名被当做列名来处理
建议:
-
输入值使用in参数
-
返回值使用out参数
-
inout参数尽量少用
变量定义:
局部变量声明一定要放在存储过程的开始:
DECLARE variable_name [,varible_name…] datatype [DEFAULT value]
变量赋值:
x SET 变量名 = 表达式值 [,varible_name = expression…]
=================================================================================
表数据
部门表t_department
增加部门信息我们可以写一个存储过程
完成下列几步操作:
1.插入自己指定的部门信息
2.查找插入之后部门的id
3.查找父部门的deppath
4.对自己的deppath进行更新
存储过程MyaddDep
USE yeb
$$
DROP PROCEDURE IF EXISTS MyAddDep
$$
CREATE DEFINER=root
@localhost
PROCEDURE MyAddDep
(IN depName VARCHAR(32),IN parentId INT,IN enabled BOOLEAN,OUT result INT,OUT result2 INT)
BEGIN
DECLARE did INT;
DECLARE parPath VARCHAR(64);
– 1.插入自己指定的部门信息
INSERT INTO t_department SET NAME=depName,parentId=parentId,enabled=enabled;
SELECT ROW_COUNT() INTO result; – result为插入语句作用的行数
– 2.查找插入之后部门的id
SELECT LAST_INSERT_ID() INTO did; – did现在是插入部门信息的id
SET result2=did;
– 3.查找父部门的depPath
SELECT depPath INTO parPath FROM t_department WHERE id=parentId;
– 4.对自己的deppath进行更新
UPDATE t_department SET depPath=CONCAT(parPath,‘.’,did) WHERE id=did;
– 5.父部门的isParent更新为1
UPDATE t_department SET isParent=TRUE WHERE id=parentId;
END$$
DELIMITER ;
package com.wql.server.controller;
import com.wql.server.pojo.Department;
import com.wql.server.pojo.RespBean;
import com.wql.server.service.IDepartmentService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
-
-
前端控制器
-
@author wql
-
@since 2021-05-03
*/
@RestController
@RequestMapping(“/system/basic/department”)
public class DepartmentController {
@Autowired
IDepartmentService departmentService;
@ApiOperation(“增加部门信息”)
@PutMapping(“/”)
public RespBean addDep(@RequestBody Department department){
return departmentService.addDep(department);
}
}
package com.wql.server.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wql.server.mapper.DepartmentMapper;
import com.wql.server.pojo.Department;
import com.wql.server.pojo.RespBean;
import com.wql.server.service.IDepartmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
-
-
服务实现类
-
@author wql
-
@since 2021-05-03
*/
@Service
public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Department> implements IDepartmentService {
@Autowired
DepartmentMapper departmentMapper;
/**
*增加部门信息
-
@param department
-
@return
*/
@Override
public RespBean addDep(Department department) {
department.setEnabled(true);
//存储过程的返回值存储在result中
departmentMapper.addDep(department);
int result = department.getResult();
if(result==1){
return RespBean.success(“添加成功”,department);
}
return RespBean.error(“添加失败”);
}
}
package com.wql.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wql.server.pojo.Department;
import com.wql.server.pojo.RespBean;
import java.util.List;
/**
-
-
Mapper 接口
总结
本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!
MySQL50道高频面试题整理:
加入社区:https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
midou.mybatisplus.core.mapper.BaseMapper;
import com.wql.server.pojo.Department;
import com.wql.server.pojo.RespBean;
import java.util.List;
/**
-
-
Mapper 接口
总结
本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!
MySQL50道高频面试题整理:
[外链图片转存中…(img-rt8tPn5R-1725700961377)]
加入社区:https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0