一、存储过程管理
1.查询存储过程
查询所有储存过程
语法
show procedure status;
代码实现
#查询存储过程
show procedure status;
运行结果
加入条件查询储存过程
语法
show procedure status where db='储存过程名';
代码实现
#查询带有条件的储存过程 查询名字为proc_test1的储存过程
show procedure status where Name='proc_test1';
运行结果
查询创建细节
查询db_test2表中的proc_test1存储过程;
代码实现
#查询创建细节
show create procedure db_test2.proc_test1;
运行结果
2.修改储存过程
修改储存过程指的是修改存储过程的特征/特性
语法
alter procedure 储存过程名 特征1 [特征2 特征3……];
存储过程的特征参数
案例
代码实现
#修改储存过程
alter procedure proc_test1 reads sql data;
运行结果
3.删除储存过程
语法
drop procedure 储存过程名;
案例
代码实现
#删除储存过程
drop procedure proc_test1;
运行结果
修改结果
游标:拼接查询结果
问题:如果我们要创建一个存储过程,需要返回查询语句查询到的多条数据
游标的概念
游标可以用来依次取出查询结果集中的每一条数据——逐条读取查询结果集中的记录
游标的作用
在储存过程中查询多条语句
游标的使用步骤
查询表中的多个记录逐条返回所有记录
1.声明游标语法:
关键字:cursor
游标配合查询语句
declare 游标名字 cursor for 某个查询结果/查询条件;2.打开游标
关键字:open
oppen 游标名字;
3.使用游标
关键字:fetch
游标名字 into 数据放到的变量中
案例
创建储存过程
代码实现
#创建储存过程
create procedure proc_test13(out result varchar(200))
begin
#游标变量
declare cid int;
declare cname varchar(20);
#定义计数变量
declare num int;
declare i int;
#定义存储每条数据的变量
declare str varchar(100);
#定义游标
#查询语句执行之后返回一个结果集(多条记录),使用游标遍历查询结果
#游标的作用:可以把当前查询到的所有数据变成一个结果集,游标会记录每一项数据
#在使用前先定义游标,记录总数据量打开游标进行遍历
declare mycursor cursor for
select class_id,name from classes c ;
#记录总数据量
select count(*) into num from classes c ;
#打开游标
open mycursor;
set i=0;
#开始遍历
while i<num do
#提取游标中的每一条数据,并将结果赋值给游标变量 fetch关键字提取数据
fetch mycursor into cid,cname;
set i=i+1;
#定义每条数据
#concat_ws用指定的符号将所有字符串拼接在一起
set str = concat_ws('~',cid,cname);
#select concat_ws('~',cid,cname \) into str;
set result = concat_ws(',',result,str);
end while;
#关闭游标
close mycursor;
end;
运行结果
调用储存过程
代码实现
#调用储存过程
set @r = '';
call proc_test13(@r);
select @r from dual;
运行结果
数据被拼接在一起
游标的作用:将表中多个数据拼接在一起进行查询