1、MySQL存储过程

  1.1、什么是存储过程

带有逻辑的sql语句;带有流程控制语句(if  while)等等 的sql语句

  1.2、存储过程的特点

1)执行效率非常快,存储过程是数据库的服务器端执行的。
      2)移植性很差,不同数据库的存储过程是不能移植的。

2、存储过程的语法

-- 创建存储过程
1 DELIMITER $  -- 声明存储过程的结束符
CREATE PROCEDURE pro_test() -- 创建存储过程 存储过程的名称(参数列表)
BEGIN  -- 开始
    -- 这中间可以写多个sql语句     -- sql语句+流程控制等
 
END $ -- 结束 结束符
 --执行存储过程
CALL pro_test(); -- call存储过程的名称(参数)
 -- 存储过程名称里面的参数:
IN :表示输入参数,可以携带数据存储过程中
OUT:表示输出参数,可以从存储过程中返回结果
INOUT:表示输入输出参数,既可以输入功能,也可输出功能
-- 删除存储过程
DROP PROCEDURE pro_test; -- 删除存储过程 存储过程的名称;

3、实例演示

  3.1、带有参数的存储过程           Java代码调用存储过程的方法:https://www.cnblogs.com/dshore123/p/10582283.html

 -- 需求:传入一个员工的id,查询员工的信息
DELIMITER $
CREATE PROCEDURE pro_findById(IN eid INT) -- IN: 输入参数; eid:传入参数的名称; int:传入参数的类型
BEGIN
SELECT * FROM employee WHERE id = eid;
END $ -- 调用
CALL pro_findByID(4)

调用pro_findByID() 后的结果图

         

  3.2、带有输出参数的存储过程

 -- 带有输出参数的存储过程
DELIMITER $
CREATE PROCEDURE pro_test_out(OUT str VARCHAR(20)) -- out:输出参数
BEGIN
-- 给参数赋值
SET str = 'helloMySQL';
END $ CALL pro_test_out(@NAME); -- 调用pro_test_out存储过程
SELECT @NAME; -- 查询pro_test_out存储过程 -- 如何返回接收的返回数值
-- ****mysql的变量******
-- 全局变量(内置变量):mysql数据库中内置的变量(所有连接都起作用)
-- 查看所有的全局变量:show variables;
-- 查看某个全局变量:select @@变量名
-- 修改全局变量:set 变量名 = 新值 -- 会话变量:只存在于当前客户端与数据库的一次连接当中;如果断开,那么会话变量将全部失效(丢失)。
-- 定义会话变量: set @变量 = 值;
-- 查看会话变量: select @变量;
-- character_set_client: 服务器的接收编码
-- character_set_results: 服务器的输出编码 -- 局部变量:在存储过程中使用的变量就叫局部变量;只要存储过程执行完毕,局部变量就丢失。

结果图

  3.3、带有输入输出参数的存储过程

 -- 带有输入输出参数的存储过程
DELIMITER $
CREATE PROCEDURE pro_test_InOut(INOUT n INT) -- INOUT: 输入输出参数
BEGIN
-- 查看变量
SELECT n;
SET n=500;
END $ -- 调用
SET @n=10;
CALL pro_test_InOut(@n);
SELECT @n;

结果图

         

  3.4、带有条件判断存储过程

 -- 需求:输入一个整数,如果是1,则返回'星期一';如果是2,则返回'星期二';如果是3,则返回'星期三'。如果是其他,则返回'输入有误'
DELIMITER $
CREATE PROCEDURE pro_testIf(IN num INT,OUT str VARCHAR(32))
BEGIN
IF num=1 THEN
SET str = '星期一';
ELSEIF num = 2 THEN
SET str = '星期二';
ELSEIF num = 3 THEN
SET str = '星期三';
ELSE
SET str = '输入错误';
END IF;
END $ CALL pro_testIf(3,@str);
SELECT @str;

结果图

  3.5、带有循环功能的存储过程

 -- 需求:输入一个整数,求和。例如:输入100 ,统计1~100的和
DELIMITER $
CREATE PROCEDURE pro_testWhile(IN num INT,OUT result INT)
BEGIN
-- 定义一个局部变量 for(int i=1;i<=100;i++)
DECLARE i INT DEFAULT 1; -- 定义一个局部变量i,int类型,默认值为1。
DECLARE vsum INT DEFAULT 0; -- 定义一个局部变量vsum,int类型,默认值为0。
WHILE i <= num DO
SET vsum = vsum + i;
SET i = i + 1;
END WHILE;
SET result = vsum;
END $ CALL pro_testWhile(100,@result);
SELECT @result;

结果图

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/10559182.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

Java基础89 MySQL存储过程的更多相关文章

  1. Java基础86 MySQL数据库基础知识

    本文知识点(目录): 1.MySQL数据库的概述    2.MySQL数据库的管理[对数据库的操作](查询.删除.创建数据库,以及查询和修改数据库的编码模式)    3.表的管理[对数据库 表的操作] ...

  2. java, mybatis, 调用mysql存储过程

    Map<String, Object> bindinfo = new HashMap<String, Object>();            bindinfo.put(&q ...

  3. Java基础87 MySQL数据约束

    1.默认值 -- 创建表student1,设置address字段有默认值 create table student1 ( id int, name ), address ) default '广东省深 ...

  4. Java基础之MySQL数据库与JDBC

    一.数据库 DBMS         数据库管理系统 是由多个程序构成的专门用来管理大量数据的计算机系统 Server       提供数据存储.检索.计算等服务的网络程序+系统服务 Notifier ...

  5. Java基础92 MySQL插入当前系统时间

    1.时间格式 用yyyy表示年份(year). -- y  表示年的最后一位,yy 表示年的最后2位,yyy 表示年的最后3位,yyyy 用4位数表示年用MM表示月份(month).-- mm 用2位 ...

  6. Java基础91 mysql的用户权限设置问题

    1.概述 1)MySQL数据库中root用户具有最高的权限(超级用户),可以对任何数据库,任何表进行操作. 2)权限账户,只拥有部分权限(CRUD) .例如:只能操作某个数据库的某张表等等. 2.my ...

  7. Java基础90 MySQL触发器

    1.创建触发器 CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt ...

  8. ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库

    1.MySQL存储过程   1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if  while)等等 的sql语句   1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...

  9. 面试官突然问我MySQL存储过程,我竟然连基础都不会!(详细)

    所有知识体系文章,GitHub已收录,欢迎Star!再次感谢,愿你早日进入大厂! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual ...

随机推荐

  1. Win2008r2 设置 多用户同时远程

    Study From http://blog.sina.com.cn/s/blog_7ebe66420101tfln.html 1. 启动远程桌面,关闭防火墙 略过不提 2. 添加远程服务角色, 打开 ...

  2. JIRA部署破解和confluence整合

    JIRA是一个项目跟踪管理工具,帮助团队创建计划任务.构建并发布优秀的产品.全球成千上万的团队选择JIRA,用JIRA来捕获.组织管理缺陷.分配任务,跟踪团队的活动.不论在桌面PC还是移动终端设备上, ...

  3. java之不修改变量的数据类型的处理方式

  4. Eclipse Job

    Job可以我们基于Eclipse的Java程序中,我们有很多种方式提供多任务的实现.熟悉Java的朋友立即会想到Java的Thread类,这是Java中使 用最多的一个实现多任务的类.Eclipse平 ...

  5. BZOJ2561 最小生成树(最小割)

    考虑kruskal的过程:按边权从小到大考虑,如果这条边的两端点当前不连通则将其加入最小生成树.由此可以发现,某条边可以在最小生成树上的充要条件是其两端点无法通过边权均小于它的边连接. 那么现在我们需 ...

  6. CF494C Helping People 解题报告

    CF494C Helping People 题意翻译 有一个长为 \(n\) 的数列,初始时为 \(a_{1\dots n}\). 给你 \(q\) 个操作,第 \(i\) 个操作将 \([l_i,r ...

  7. 【uoj3】 NOI2014—魔法森林

    http://uoj.ac/problem/3 (题目链接) 题意 给出一张带权图,每条边有两个权值A和B,一条路径的花费为路径中的最大的A和最大的B之和.求从1走到n的最小花费. Solution ...

  8. 解题:ZJOI 2006 皇帝的烦恼

    禁止DP,贪心真香 有一个比较明显的贪心思路是让每个人和距离为$2$(隔着一个人)的人尽量用一样的,这样只需要扫一遍然后对每对相邻的人之和取最大值即可.但是当人数为奇数时这样就会出锅,因为最后一个人和 ...

  9. 收藏:Windows消息机制

    百度百科介绍的windows消息机制也不错:http://baike.baidu.com/view/672379.htm Windows的应用程序一般包含窗口(Window),它主要为用户提供一种可视 ...

  10. 14.会场安排问题(L4)

    时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安排学校 ...