第三章使用游标

-- 游标(cursor)是一个存储在MySQL服务器上的数据库查询,
--    它不是一条SELECT语句,而是被该语句检索出来的结果集。
-- 游标:用于存储查询结果集的数据类型
-- 声明游标:
-- DECLARE 游标名称 CURSOR FOR 查询语句;
-- 声明变量:
-- DECLARE 变量名 数据类型;
-- 打开关闭游标:
-- open 游标名称;     close 游标名称;
-- 获取游标记录:
-- FETCH 游标名称 INTO 变量名;

-- DECLARE:声明,定义
-- CURSOR:游标
-- FETCH:取出,检索

-- 创建存储过程
CREATE PROCEDURE sp1()
BEGIN
    -- 声明变量
    DECLARE a INT(11);
    -- sql语句;
    -- 1.声明游标 查询students表中的age
    DECLARE s_age CURSOR FOR SELECT age FROM students;
    -- 2打开游标
    OPEN s_age;
    -- 3检索游标数据并赋值给变量a
    FETCH s_age INTO a;

    -- 4关闭游标
    CLOSE s_age;
END;

-- 调用存储过程
CALL sp1();

-- 创建存储过程,查询students表中age,创建游标,把查询到的结果数据,插入到新表mystudents里面


CREATE PROCEDURE stu_age2()
BEGIN
    DECLARE s_age INT ;
    DECLARE stu_age CURSOR -- 定义和命名游标
    FOR SELECT age FROM students;
    -- 当出现报错码02000关闭游标  声明条件处理程序
    DECLARE EXIT HANDLER FOR NOT FOUND CLOSE stu_age;
    
    CREATE TABLE IF NOT EXISTS mystudents -- 建表
    (id int primary key auto_increment , new_age INT);
    
    OPEN  stu_age;
    WHILE TRUE DO
    FETCH stu_age INTO s_age;
    INSERT INTO mystudents(id,new_age) VALUES(NULL,s_age);
    END WHILE;
END;
CALL stu_age2(); -- 执行存储过程
SELECT * FROM mystudents;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

施田雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值