《sql必知必会》学习笔记(七)游标

sql必知必会

(七)游标

第二十一课 使用游标

21.1 游标

游标是SELECT查询结果集,可以前进或后退行等。

21.2 使用游标

21.2.1 创建游标
DECLARE ordernumbers CURSOR
21.2.2 打开/关闭游标
OPEN cursorname;
CLOSE cursorname;
21.2.3 使用游标数据
FETCH cursorname INTO tmp;

Example

CREATE PROCEDURE processorders()
BEGIN
	-- 定义局部变量
	DECLARE tmp INT;
	DECLARE done BOOLEAN DEFAULT 0;
	DECLARE t DECIMAL(8, 2);
	
	-- 定义游标
	DECLARE ordernumbers CURSOR
	FOR
	SELECT order_num FROM orders;
	
	-- 定义continue handler
	DECLARE CONTINUE HANDLER
	FOR
	SQLSTATE '02000' SET done = 1;	-- 当没有行后done设置为1
	
	-- 定义表保存结果
	CREATE TABLE IF NOT EXISTS ordertotals
		(order_num INT,
         total DECIMAL(8, 2));
    
	-- 游标操作
	OPEN ordernumbers;			-- 打开游标
		-- 循环读取
	REPEAT
		FETCH ordernumbers INTO tmp;
		
		CALL ordertotal(tmp, 1, t);	-- ordertotal是已定义的存储过程
		
		INSERT INTO ordertotals(order_num, total)
		VALUES(tmp, t);
	UNTIL done END REPEAT;
	
	CLOSE ordernumbers;			-- 关闭游标
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值