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


    一、存储过程管理

    1.查询存储过程

    查询所有储存过程

    语法

    show procedure status;

    代码实现
    1. #查询存储过程
    2. show procedure status;
    运行结果

     加入条件查询储存过程

    语法

    show procedure status where db='储存过程名';

    代码实现
    1. #查询带有条件的储存过程 查询名字为proc_test1的储存过程
    2. show procedure status where Name='proc_test1';
    运行结果

    查询创建细节

    查询db_test2表中的proc_test1存储过程;

    代码实现
    1. #查询创建细节
    2. show create procedure db_test2.proc_test1;
    运行结果

    2.修改储存过程

    修改储存过程指的是修改存储过程的特征/特性

    语法

    alter procedure 储存过程名 特征1 [特征2 特征3……];

    存储过程的特征参数

    案例 

    代码实现
    1. #修改储存过程
    2. alter procedure proc_test1 reads sql data;
    运行结果

    3.删除储存过程

    语法

    drop procedure 储存过程名;

    案例

    代码实现
    1. #删除储存过程
    2. drop procedure proc_test1;
    运行结果

    修改结果

    游标:拼接查询结果

    问题:如果我们要创建一个存储过程,需要返回查询语句查询到的多条数据

    游标的概念

    游标可以用来依次取出查询结果集中的每一条数据——逐条读取查询结果集中的记录

    游标的作用

    在储存过程中查询多条语句

    游标的使用步骤

    查询表中的多个记录逐条返回所有记录

    1.声明游标语法:

    关键字:cursor

    游标配合查询语句

    declare 游标名字 cursor for 某个查询结果/查询条件;2.打开游标

    关键字:open

    oppen 游标名字;

    3.使用游标

    关键字:fetch

    游标名字 into 数据放到的变量中

    案例

    创建储存过程

    代码实现
    1. #创建储存过程
    2. create procedure proc_test13(out result varchar(200))
    3. begin
    4. #游标变量
    5. declare cid int;
    6. declare cname varchar(20);
    7. #定义计数变量
    8. declare num int;
    9. declare i int;
    10. #定义存储每条数据的变量
    11. declare str varchar(100);
    12. #定义游标
    13. #查询语句执行之后返回一个结果集(多条记录),使用游标遍历查询结果
    14. #游标的作用:可以把当前查询到的所有数据变成一个结果集,游标会记录每一项数据
    15. #在使用前先定义游标,记录总数据量打开游标进行遍历
    16. declare mycursor cursor for
    17. select class_id,name from classes c ;
    18. #记录总数据量
    19. select count(*) into num from classes c ;
    20. #打开游标
    21. open mycursor;
    22. set i=0;
    23. #开始遍历
    24. while i<num do
    25. #提取游标中的每一条数据,并将结果赋值给游标变量 fetch关键字提取数据
    26. fetch mycursor into cid,cname;
    27. set i=i+1;
    28. #定义每条数据
    29. #concat_ws用指定的符号将所有字符串拼接在一起
    30. set str = concat_ws('~',cid,cname);
    31. #select concat_ws('~',cid,cname \) into str;
    32. set result = concat_ws(',',result,str);
    33. end while;
    34. #关闭游标
    35. close mycursor;
    36. end;
    运行结果

    调用储存过程

    代码实现
    1. #调用储存过程
    2. set @r = '';
    3. call proc_test13(@r);
    4. select @r from dual;
    运行结果

    数据被拼接在一起

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

  • 相关阅读:
    内网离线安装Nginx并配置SSL
    照片图片 动漫化 卡通化
    crt中输入任何命令都不可以成功
    家政服务行业怎么做微信小程序开发
    网络协议 — IPv6 互联网协议第 6 版
    简单三步走搞定动态规划难题,记好这三板斧,动态规划就不难
    C# 读写Ini文件
    通过 Jetbrains GateWay实现Remote Development
    AI大语言模型时代构建全新数据平台
    算法 | 详解斐波那契数列问题
  • 原文地址:https://blog.csdn.net/m0_73983707/article/details/134285573