
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;

drop procedure 储存过程名;

- #删除储存过程
- drop procedure proc_test1;


问题:如果我们要创建一个存储过程,需要返回查询语句查询到的多条数据
游标可以用来依次取出查询结果集中的每一条数据——逐条读取查询结果集中的记录
在储存过程中查询多条语句

查询表中的多个记录逐条返回所有记录
关键字:cursor
游标配合查询语句
2.打开游标关键字:open
oppen 游标名字;
关键字: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;

数据被拼接在一起
游标的作用:将表中多个数据拼接在一起进行查询