56,679
社区成员
发帖
与我相关
我的任务
分享
USE slt;
DROP PROCEDURE IF EXISTS sp_count_bonus2;
CREATE PROCEDURE sp_count_bonus2
(IN v_issue INT)-- 上期的期号
BEGIN
DECLARE v_account_id VARCHAR(20);-- 账号
DECLARE v_fig INT;--
DECLARE v_errint INT;-- 错误编码
DECLARE v_errmge VARCHAR(200);-- 错误描述
-- DECLARE v_issue INT;-- 期号
-- 捕获异常
DECLARE CONTINUE HANDLER FOR SQLWARNING,NOT FOUND,SQLEXCEPTION SET v_errint=-1;
BEGIN
START TRANSACTION
-- 创建游标
DECLARE cur CURSOR FOR SELECT DISTINCT account_id FROM slt_bet_info WHERE issue=v_issue AND bet_state='A';
-- 捕获异常
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_fig=1;
SET v_fig = 0;
-- 打开游标
OPEN cur;
-- 变量赋值
FETCH cur INTO v_account_id;
WHILE v_fig = 0 DO
BEGIN
CALL sp_count_bonus(v_account_id,v_issue);
FETCH cur INTO v_account_id;
END;
END WHILE;
CLOSE cur;
CALL sp_clear_credit;
END;
IF v_errint=-1
BEGIN
ROLLBACK;
SELECT v_errint;
END;
ELSE
BEGIN
SET v_errint=0;
SET v_errmge='奖金计算成功';
COMMIT;
SELECT v_errint;
END;
END IF;
END;
-- 创建游标
DECLARE cur CURSOR FOR SELECT DISTINCT account_id FROM slt_bet_info WHERE issue=v_issue AND bet_state='A';
-- 捕获异常
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_fig=1;
SET v_fig = 0;
-- 打开游标
OPEN cur;
-- 变量赋值
FETCH cur INTO v_account_id;
WHILE v_fig = 0 DO
BEGIN
CALL sp_count_bonus(v_account_id,v_issue);
FETCH cur INTO v_account_id;
END;
END WHILE;
CLOSE cur;