当前位置: 首页 > news >正文

Mysql数据库 11.SQL语言 储存过程 下 储存过程管理和游标

一、存储过程管理

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;
运行结果

数据被拼接在一起

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

http://www.lryc.cn/news/222563.html

相关文章:

  • 如何在Visual Studio上创建项目并运行【超级详细】
  • 《C++ Primer》第7章 类(二)
  • git仓库代码克隆
  • AM@向量代数@向量基本概念和向量线性运算
  • 2023-11-08 LeetCode每日一题(最长平衡子字符串)
  • Web3.0的测试题
  • Javascript知识点详解:对象的继承、原型对象、原型链
  • 学之思开源考试系统部署至Centos7
  • 如何利用浏览器的可见性API优化网站性能
  • 还不知道IP地址不够用是怎么被大牛们解决的?(NAT/NAPT, IPv6, DHCP)
  • 使用决策树预测隐形眼镜类型
  • [ACTF2020 新生赛]BackupFile 1
  • 解决vuex刷新数据丢失
  • linux系统下读取当前硬盘的温度
  • python 深度学习 解决遇到的报错问题8
  • Linux pipe()系统调用示例
  • 音频中的采样率和比特率
  • Python常用脚本
  • Redis5 分布式系统之主从模式
  • 【黑马程序员】Maven 进阶
  • 231108 C语言memset当第三个参数为0,即设置个数为零也不报错
  • HMM与LTP词性标注之马尔科夫模型(HMM原理剖析)
  • Python自动化测试selenium指定截图文件名方法
  • Linux 实现文件后半部分的复制
  • 阿里开源中间件一览
  • Ubuntu20.04下Salome_meca 2022软件安装(支持GPU加速)
  • uniapp:打包ios配置隐私协议框
  • JS逆向爬虫---请求参数加密③【比特币交易爬虫】
  • 云计算:未来科技的超级英雄
  • 【Node.js入门】1.3 开始开发Node.js应用程序