MYSQL-cursor

– cursor (游标),游标不是数据对象,是数据类型,结果集引用
– 类似于ResultSet(游标)

DROP PROCEDURE IF EXISTS proc

DELIMITER C R E A T E P R O C E D U R E p r o c ( ) B E G I N D E C L A R E s t u I d I N T ; D E C L A R E s t u N a m e V A R C H A R ( 20 ) ; D E C L A R E s t u A g e I N T ; D E C L A R E c i d I N T ; D E C L A R E d o n e I N T D E F A U L T 0 ; − − 定 义 游 标 变 量 并 指 向 结 果 D E C L A R E s t u c u r s o r C U R S O R F O R S E L E C T ∗ F R O M s t u d e n t ; − − 定 义 游 标 读 取 不 到 数 据 的 时 候 的 处 理 方 式 把 d o n e 赋 值 为 1 , 该 句 之 后 不 能 再 定 义 变 量 D E C L A R E C O N T I N U E H A N D L E R F O R N O T F O U N D S E T d o n e = 1 ; − − 打 开 游 标 , 产 生 结 果 集 O P E N s t u c u r s o r ; R E P E A T − − 读 取 游 标 的 数 据 F E T C H s t u c u r s o r I N T O s t u I d , s t u N a m e , s t u A g e , c i d ; S E L E C T s t u I d , s t u N a m e , s t u A g e , c i d ; U N T I L d o n e = 1 E N D R E P E A T ; − − 关 闭 游 标 C L O S E s t u c u r s o r ; E N D CREATE PROCEDURE proc() BEGIN DECLARE stuId INT ; DECLARE stuName VARCHAR(20) ; DECLARE stuAge INT ; DECLARE cid INT ; DECLARE done INT DEFAULT 0 ; -- 定义游标变量并指向结果 DECLARE stu_cursor CURSOR FOR SELECT * FROM student ; -- 定义游标读取不到数据的时候的处理方式 把done赋值为1,该句之后不能再定义变量 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ; -- 打开游标,产生结果集 OPEN stu_cursor ; REPEAT -- 读取游标的数据 FETCH stu_cursor INTO stuId , stuName , stuAge , cid ; SELECT stuId , stuName , stuAge , cid ; UNTIL done = 1 END REPEAT ; -- 关闭游标 CLOSE stu_cursor ; END CREATEPROCEDUREproc()BEGINDECLAREstuIdINT;DECLAREstuNameVARCHAR(20);DECLAREstuAgeINT;DECLAREcidINT;DECLAREdoneINTDEFAULT0;DECLAREstucursorCURSORFORSELECTFROMstudent;done1,DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=1;OPENstucursor;REPEATFETCHstucursorINTOstuId,stuName,stuAge,cid;SELECTstuId,stuName,stuAge,cid;UNTILdone=1ENDREPEAT;CLOSEstucursor;END

CALL proc()
SELECT * FROM student

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值