MySQL存储过程

................................
delimiter 自定义结束符号aa1
create procedure 存储名称 ([in, out, inout] 参数名 数据类型)
begin sql语句
end 自定义结束符号aa1
delimiter ;
................................

1——入门探路

create database aa1;
use aa1;
delimiter &&
create procedure pro1()beginselect ename, salary from employeeend &&
delimiter ;
call pro1() -- 调用存储过程

2——变量定义

declare 变量名称 变量类型 [default 默认值]
例子1: declare a varchar(20) default '2022-04-14';  -- {局部使用}变量定义
例子2: set a = 'hello python'             -- 变量赋值
例子3: select a;                             -- 输出变量值
例子4:declare name1 varchar(20);select ename into name1 from employee; select name1;                            -- insert into赋值
{用户变量} @变量名 -- 直接用,不用定义,使用即声明(外部可以使用)
例子1:
delimiter &&
create procedure pro02()beginset @age = 18;select @age;      end &&
delimiter ;;
call pro02(); -- 18
select @age ; -- 18
系统变量

3——参数传递

  • in
  • out
  • inout
delimiter &&
create procedure pc1( in a1 varchar(10), in a2  int(10) )beginselect * from employee where ename = a1 and age > a2;end &&
delimiter ;;
call pc1('张三', 22)    ;
delimiter &&
create procedure pro2(in a1 varchar(10), out b1 int(10) )beginselect age into b1 from employee where empno = a1;end &&
delimiter ;;
call pro2('10001', @age1);
select @age1;
select a1, b1 into c1, d1 from employee;
传入a1,经过中间处理再次传出
delimiter &&
create procedure pr2(inout s1 int)beginset s1 = s1 * 10 + 5;end &&
delimiter ;;
set @ss = 12;
call pr2(@ss);
select @ss;delimiter &&
create procedure pr2(inout name varchar(20), inout sal int)begin select concat_ws('_', ename, deptno) into ss1 from employee where ename = name;set sal = sal * 12;end &&
delimiter ;;
set @s1 = '张三';
set @s2 = 13000;
call pr2(@s1, @s2);
select @s1;
select @s2;

4——流程控制

  • if语句
  • case 语句
  • while – do
  • repeat – until
  • loop – leave
例子1:录入成绩,判断等级
delimiter &&
create procedure pr3(in score int)begin if     score <60 then select '好可惜哦,不及格';elseif score <70 then select '加把油,你可以的';elseif score <90 then select '看好你哦';else select '棒棒哒(#^.^#)';end if;end &&
delimiter ;;
call pr3(65);
call pr3(75);
call pr3(98);
例子2:case语句判断付款方式
delimiter &&
create procedure pr4(in num int)begin case num when 1 then select '支付宝支付';when 2 then select '微信支付';when 3 then select '云闪付';else select '信用卡支付';end case;end &&
delimiter ;;
call pr5(2);
例子3:case-when判断收入等级
delimiter &&
create procedure pr5(in sal int)begin case when sal > 20000 then select '高收入群体';when sal < 15000 then select '中等收入';when sal < 10000 then select '温饱阶段';else select '低保群体';                end case;end &&
delimiter ;;
call pr4(10090);

5——cursor 游标

declare 游标名称 cursor for select语句   -- 声明
open 游标名称                           -- 打开
fetch 游标名称 into 变量名称             -- 取值
close 游标名称                         -- 关闭
例子4:使用游标取值
delimiter &&
create procedure pr6(in dept varchar(10))begin -- a. 定义局部变量declare e_name varchar(20);declare e_sal decimal(7,2);-- b. 定义游标declare my_cursor cursor forselect ename, salary from employee e, dept dwhere e.dept_no = d.deptno and d.dname = dept;-- c. 打开游标open my_cursor;-- d.取值fetch my_cursor into e_name, e_sal;select e_name, e_sal;-- e.关闭游标close my_cursor;end &&
delimiter ;;
call pr6('销售部');

6——异常处理

delimiter &&
create procedure pro7(in dname varchar(10))begin declare var_empno int;declare var_ename varchar(20);declare flag int default 1;  -- 声明标记值declare cur01 cursor for     -- 声明游标select empno, ename from dept a, emp bwhere a.deptno = b.deptno and b.deptno = dname;-- 定义异常处理 (条件码,条件名,触发条件,触发之后执行)declare continue handler for 1329 set flag=0;-- 打开游标open cur01;ss1: loop fetch cur01 into var_empno, var_ename;if flag = 1 then select var_empno, var_ename;else leave ss1;end if;end loop ss1;close cur01;end &&
delimiter ;;

7——存储函数

create function 函数名称(参数列表 参数类型) returns 类型
begin....
end;
例子1:无参函数——返回数据总量
delimiter &&
create function fun1() returns intbegindeclare cn1 int;select count(*) into cn1 from emp;return cn1;end &&
delimiter ;;
例子2:有参函数——返回员工姓名
set global log_bin_trust_function_creates = true; -- 也可以在my.ini中设置
drop function if exists fun2;
delimiter &&
create function fun2(emp_no int) returns varchar(20)begindeclare e_name varchar;select ename into e_name from emp where empno = emp_no;return e_name;end &&
delimiter ;;
select fun2(1002);

新手入门MySQL——篇7相关推荐

  1. ps基础教程新手入门第一篇:ps界面的介绍

    欢迎来到慕恬瑶平面设计,今天给大家介绍PS基础教程新手入门第一篇: ps界面的介绍.目的让第一次接触ps的小伙伴通过ps基础教程新手入门来了解ps界面的菜单栏,工具栏已方便日后使用. 首先,打开PS ...

  2. 新手入门一篇就够:从零开发移动端IM

    一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和交流门槛,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...

  3. 【原创】新手入门一篇就够:从零开发移动端IM

    一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...

  4. 新手入门MySQL数据库【基础知识】

    MySQL万字教程,从入门到精通,争取三篇拿下MySQL初级知识,加油 ⛽ 我们终其一生不是为了迎合每个人,而是要找和我们共振的那部分人,这世界很喧嚣,做好你自己就好 MySQL文章目录 1. 基本操 ...

  5. kaggle新手入门第一篇——Titanic

    Titanic作为Kaggle官方网站的第一篇入门比赛,如果你想学习kaggle,那么从它开始无疑是比较好的一个选择. 首先贴一下网址:https://www.kaggle.com/c/titanic ...

  6. mysql数据库命令_新手入门MYSQL数据库命令大全

    一.命令行连接数据库 Windows操作系统进入CMD命令行,进入mysql.exe所在目录,运行命令 mysql.exe -h主机名 -u用户名 -p密码 注意:参数名与值之间没有空格 , 如:-h ...

  7. Python新手入门-操作篇

    原文来自于:https://www.jb51.net/article/163306.htm pycharm是一款高效的python IDE工具,它非常强大,且可以跨平台,是新手首选工具!下面我给第一次 ...

  8. Protege新手入门(基础篇)

    通过制作一个简单的动物本体,来使大家了解protege建立owl的基础用法. 步骤1 建立新的项目.打开protege,然后会出现对话框,点击Create New Project...,出现Creat ...

  9. 外汇新手入门学习篇(了解相关计算)

    了解相关计算 (一)外汇汇率的点差 由于刚才提到了买入和卖出两种价,两种价之间的距离就需要用单位点来计量.点也是国际外汇市场上最常用的单位,是小数点后最后一位,通常也就是小数点后的四位,日元汇率为小数 ...

最新文章

  1. DDoS***如此猖獗,我们该如何解决?
  2. 通过ObjectMapper将实体转成字符串 ,将 用json存的的list 回转list
  3. 使用CSS3各个属性实现小人的动画
  4. 最新进展概述:澄清式提问辅助理解信息检索中的用户意图
  5. Leetcode怎么调试java代码,IDEA2020.1使用LeetCode插件运行并调试本地样例的方法详解...
  6. python装饰器的使用
  7. java数组排序问题:array.sort()是从小到大排序,那么如何从大到小排序?
  8. hadoop3.1.1 HA高可用分布式集群安装部署
  9. ssms应用程序错误_来自应用程序的查询计划与SSMS不同时的性能故障排除
  10. [转]企业网站首页设计常见的6种布局方式
  11. spring 中beanFactory和ApplicationContext的区别
  12. innerText、outerText与innerHTML、outerHTML
  13. 魔兽世界单机mysql密码_魔兽世界单机版-Trinity-Core数据库表解释
  14. 为何软件需要数字签名
  15. s+清辅音,读作对应的浊辅音
  16. 从魔兽世界论专业队友的重要性
  17. Go语言从控制台读取数据
  18. 传递矩阵的特征多项式
  19. 【雷达通信】合成孔径雷达(SAR)的点目标仿真matlab源码
  20. 数字孪生城市框架与发展建议

热门文章

  1. 深圳计算机维修工考试,深圳职业技能鉴定计算机维修工.doc
  2. 奇迹服务器端文件说明,奇迹云服务器
  3. PAT A1149 Dangerous Goods Packaging ——闲云潭影日悠悠,物换星移几度秋
  4. Go语言自学系列 | golang并发编程之runtime包
  5. iOS开发-图片拉伸的实现
  6. 元宇宙十问十答 || 第一问:元宇宙是什么?
  7. python读音发音-linux怎么读(中文读音发音)
  8. 《UNIX 环境高级编程》学习笔记—— 标准I/O库
  9. 考研英语词汇背诵(第一天)
  10. HDU 6203 ping ping ping (在线倍增lca+DFS序+树状数组)