一、存储过程管理
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;
运行结果
数据被拼接在一起
游标的作用:将表中多个数据拼接在一起进行查询