MySql学习-进阶-存储过程

链接: 学习视频

存储过程

介绍

介绍

特点

特点


创建

创建

delimiter $$
create procedure p1()
begin
	select * from spj;
end;
$$

命令行和workbench中要加

delimiter $$         

$$

调用

call p1();

结果


查看

查看

select * from INFORMATION_SCHEMA.ROUTINES where ROUTINE_SCHEMA = 'XXX';

查看结果1

show create procedure p2();

查看结果2


删除

删除

drop procedure if exists p2;

删除结果


变量

系统变量

变量介绍

  1. 查看系统变量
show variables;

show_variables

show session variables like 'auto%';

show_like

select @@auto_generate_certs;

select_@@

  1. 设置系统变量
set 系统变量名 =;
set @@系统变量名 =;

用户定义变量

用户定义变量介绍

  1. 赋值
set @变量名 =;
set @变量名 :=;
set @变量名 =,@变量名 =;
select @变量名 :=;
#将查询到的结果赋值给变量
#例:
select count(*) into @变量名 from 表名;

  1. 使用
select @变量名;
select @变量名,@变量名;

用户定义变量_注意


局部变量

局部变量介绍

#在begin end块内声明和使用
#变量类型就是数据库的字段类型
declare 变量名 变量类型

#对局部变量的赋值
#其实和对用户自定义变量赋值是差不多的
set @变量名 =;
set @变量名 :=;

if判断

if_语法

#总的来说很简单。
if 条件1 then
	...
elseif 条件2 then
	...
elseif 条件3 then
else
	...
end if;

参数

参数介绍
参数用法

#这东西应该也很简单吧

#在创建中-------------------
create procedure 存储过程名称(in/out/inout 参数名 参数类型,in/out/inout 参数名 参数类型)
begin
	--sql语句
end;
#使用中----------------------------
#值可以是用户自定义变量名-----------
call 存储过程名称(参数名: 值,参数名: 值);


case

case语法

#学过某一语言的应该看一眼就会了
case 某值
	when1 then 代码块
	when2 then 代码块
	else 代码块
end case;
---------------------------------
case
	when 条件表达式1 then 代码块
	when 条件表达式2 then 代码块
	else 代码块
end case;

循环

while

while

#这个也很简单,看一眼就会
while 条件 do
	代码块
end while;

repeat

repeat

#这个也很简单---------
repeat
	代码块
	until 条件
end repeat;

loop

loop

#也简单-------------------------
标记名: loop
	代码块
end loop 标记名;
#这部分相当于break;continue;
leave label;	#退出循环
iterate label;	#进入下一次循环


游标

  1. 应对于接收结果集,这就是游标的作用。
  2. 游标其实是数据类型

游标

#声明游标-------------
declare 游标名称 cursor for 查询语句;
#打开游标----------------
open 游标名称;
#获取游标记录-----------
fetch 游标名称 into 变量;#要在循环内用。
#关闭游标----------
close 游标名称;

游标例子
注意:

  1. 游标声明应在变量声明后面。
  2. while true是死循环,后面会用条件处理程序解决。

条件处理程序

条件处理程序介绍

#声明----------------------
declare handler_action handler for condition_value 代码块;
#handler_action--------------
	continue#继续
	exit	#终止
#condition_value
	SQLSTATE sqlstate_value #状态码
	SQLWARNING				#01开头,SQLSTATE代码简写
	NOT FOUND				#02开头,SQLSTATE代码简写
	SQLEXCEPTION			#未被01,02捕获的SQLSTATE代码简写

例子
在报错后会自动进入游标判别,然后退出.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉更爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值