博客说明
文章内容输出来源:拉勾教育Java就业急训营
什么是存储过程
存储过程其实就是一堆 SQL 语句的合并。中间加入了一些逻辑控制。
存储过程的优点
- 调试完成就可以稳定运行(在业务需求相对稳定的情况)
- 存储过程可以减少 业务系统与数据库的交互
存储过程的缺点
- 互联网项目中,较少使用存储过程,因为业务需求变化太快
- 存储过程的移植十分困难
存储过程的创建
普通的存储过程:
/*
格式:
delimiter $$ --声明语句的结束符号,可以自定义 ||....
create procedure 存储过程名称()
begin -- 开始编写存储过程
#要执行的SQL
end $$ -- 存储过程结束
*/
DELIMITER $$
CREATE PROCEDURE test_proc()
BEGIN
SELECT * FROM table1;
END $$
可以接收参数的存储过程:
/*
格式:
delimiter $$ --声明语句的结束符号,可以自定义 ||....
create procedure 存储过程名(in 参数名 参数类型)
begin -- 开始编写存储过程
#要执行的SQL
end $$ -- 存储过程结束
*/
DELIMITER $$
CREATE PROCEDURE test_proc(IN table_id INT)
BEGIN
DELETE FROM table1 WHERE id = table_id;
END $$
可以获取存储过程的返回值:
/*
1.变量的赋值:SET @变量名 = 值
2.OUT输出数据:OUT 变量名 数据类型
格式:
delimiter $$ --声明语句的结束符号,可以自定义 ||....
create procedure 存储过程名(in 参数名 参数类型)
begin -- 开始编写存储过程
#要执行的SQL
end $$ -- 存储过程结束
*/
#向表中插入一条数据,返回1表示成功
DELIMITER $$
CREATE PROCEDURE test_proc(IN table_id INT,OUT num INT)
BEGIN
-- 实现插入操作
INSERT INTO table1 VALUES(table_id);
-- 设置num为1
SET @num = 1;
-- 返回num
SELECT @num;
END $$
存储过程的调用
#CALL 存储过程名称;
#普通
CALL test_proc;
# 接受参数
CALL test_proc(参数);
#获取返回值
--CALL test_proc(参数,@返回值)
CALL test_proc(1,@num);