--SQL 游标使用实例
DECLARE @acct_id INT;
DECLARE cur_fixUser CURSOR FOR--定义游标
SELECT TOP 100 acct_id--定义游标要处理的数据集
FROM account_base
WHERE m_id IN (SELECT m_id
FROM master_account
WHERE market = 'uscn')
AND status = 'active'
AND business = 'CP'
OPEN cur_fixUser--打开游标
FETCH next FROM cur_fixUser INTO @acct_id--把游标提取的数据放入变量中
WHILE @@FETCH_STATUS = 0
--0 FETCH 语句成功
---1 FETCH 语句失败或此行不在结果集中
---2 被提取的行不存在
--@@fetch_status值的改变是通过fetch next from实现的
BEGIN
BEGIN try--也可以用set xact_abort on
BEGIN TRANSACTION
EXEC Op_fix_monthly_bill--执行一些操作
@acct_id;
COMMIT TRANSACTION
FETCH next FROM cur_fixUser INTO @acct_id--将游标指向下一条数据并存入变量中
END try
BEGIN catch
ROLLBACK TRANSACTION
END catch
END
CLOSE cur_fixUser--关闭游标
DEALLOCATE cur_fixUser --释放游标