Java基础89 MySQL存储过程
1、MySQL存储过程
1.1、什么是存储过程
带有逻辑的sql语句;带有流程控制语句(if while)等等 的sql语句
1.2、存储过程的特点
1)执行效率非常快,存储过程是数据库的服务器端执行的。
2)移植性很差,不同数据库的存储过程是不能移植的。
2、存储过程的语法
-- 创建存储过程
1 DELIMITER $ -- 声明存储过程的结束符 2 CREATE PROCEDURE pro_test() -- 创建存储过程 存储过程的名称(参数列表) 3 BEGIN -- 开始
4 5 -- 这中间可以写多个sql语句 -- sql语句+流程控制等 6 7 END $ -- 结束 结束符
1 --执行存储过程 2 CALL pro_test(); -- call存储过程的名称(参数)
1 -- 存储过程名称里面的参数: 2 IN :表示输入参数,可以携带数据存储过程中 3 OUT:表示输出参数,可以从存储过程中返回结果 4 INOUT:表示输入输出参数,既可以输入功能,也可输出功能
-- 删除存储过程 1 DROP PROCEDURE pro_test; -- 删除存储过程 存储过程的名称;
3、实例演示
3.1、带有参数的存储过程 Java代码调用存储过程的方法:https://www.cnblogs.com/dshore123/p/10582283.html
1 -- 需求:传入一个员工的id,查询员工的信息 2 DELIMITER $ 3 CREATE PROCEDURE pro_findById(IN eid INT) -- IN: 输入参数; eid:传入参数的名称; int:传入参数的类型 4 BEGIN 5 SELECT * FROM employee WHERE id = eid; 6 END $ 7 8 -- 调用 9 CALL pro_findByID(4)
调用pro_findByID() 后的结果图
3.2、带有输出参数的存储过程
1 -- 带有输出参数的存储过程 2 DELIMITER $ 3 CREATE PROCEDURE pro_test_out(OUT str VARCHAR(20)) -- out:输出参数 4 BEGIN 5 -- 给参数赋值 6 SET str = 'helloMySQL'; 7 END $ 8 9 CALL pro_test_out(@NAME); -- 调用pro_test_out存储过程 10 SELECT @NAME; -- 查询pro_test_out存储过程 11 12 -- 如何返回接收的返回数值 13 -- ****mysql的变量****** 14 -- 全局变量(内置变量):mysql数据库中内置的变量(所有连接都起作用) 15 -- 查看所有的全局变量:show variables; 16 -- 查看某个全局变量:select @@变量名 17 -- 修改全局变量:set 变量名 = 新值 18 19 -- 会话变量:只存在于当前客户端与数据库的一次连接当中;如果断开,那么会话变量将全部失效(丢失)。 20 -- 定义会话变量: set @变量 = 值; 21 -- 查看会话变量: select @变量; 22 -- character_set_client: 服务器的接收编码 23 -- character_set_results: 服务器的输出编码 24 25 -- 局部变量:在存储过程中使用的变量就叫局部变量;只要存储过程执行完毕,局部变量就丢失。 26
结果图
3.3、带有输入输出参数的存储过程
1 -- 带有输入输出参数的存储过程 2 DELIMITER $ 3 CREATE PROCEDURE pro_test_InOut(INOUT n INT) -- INOUT: 输入输出参数 4 BEGIN 5 -- 查看变量 6 SELECT n; 7 SET n=500; 8 END $ 9 10 -- 调用 11 SET @n=10; 12 CALL pro_test_InOut(@n); 13 SELECT @n;
结果图
3.4、带有条件判断存储过程
1 -- 需求:输入一个整数,如果是1,则返回'星期一';如果是2,则返回'星期二';如果是3,则返回'星期三'。如果是其他,则返回'输入有误' 2 DELIMITER $ 3 CREATE PROCEDURE pro_testIf(IN num INT,OUT str VARCHAR(32)) 4 BEGIN 5 IF num=1 THEN 6 SET str = '星期一'; 7 ELSEIF num = 2 THEN 8 SET str = '星期二'; 9 ELSEIF num = 3 THEN 10 SET str = '星期三'; 11 ELSE 12 SET str = '输入错误'; 13 END IF; 14 END $ 15 16 CALL pro_testIf(3,@str); 17 SELECT @str;
结果图
3.5、带有循环功能的存储过程
1 -- 需求:输入一个整数,求和。例如:输入100 ,统计1~100的和 2 DELIMITER $ 3 CREATE PROCEDURE pro_testWhile(IN num INT,OUT result INT) 4 BEGIN 5 -- 定义一个局部变量 for(int i=1;i<=100;i++) 6 DECLARE i INT DEFAULT 1; -- 定义一个局部变量i,int类型,默认值为1。 7 DECLARE vsum INT DEFAULT 0; -- 定义一个局部变量vsum,int类型,默认值为0。 8 WHILE i <= num DO 9 SET vsum = vsum + i; 10 SET i = i + 1; 11 END WHILE; 12 SET result = vsum; 13 END $ 14 15 CALL pro_testWhile(100,@result); 16 SELECT @result;
结果图
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/10559182.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |