数据库sql游标和递归实例讲解与分析
时间:2018-08-20
本文章向大家介绍数据库sql游标和递归实例讲解与分析,需要的朋友可以参考一下
DECLARE @UserID INT; --推广员帐号 DECLARE @ProxyID INT; --代理帐号 DECLARE @Score INT=1000; --分数 SELECT @UserID = [SpreaderID] FROM [QPAccountsDB].[dbo].[AccountsInfo] WHERE UserID = 5055; SELECT --查出推广员的代理帐号 @ProxyID = ProxyID FROM [QPAccountsDB].[dbo].[AccountsInfo] LEFT JOIN [QPProxyDB].[dbo].[BS_ProxyInfo] ON BS_ProxyInfo.account = AccountsInfo.Accounts WHERE UserID = @UserID; PRINT @ProxyID; CREATE TABLE #ProxyInfo ( belongsAgent INT, assignProportion TINYINT ); WITH cte AS ( SELECT belongsAgent FROM [QPProxyDB].[dbo].[BS_ProxyInfo] WHERE ProxyID = @ProxyID AND belongsAgent <> -1 UNION ALL SELECT a.belongsAgent FROM [QPProxyDB].[dbo].[BS_ProxyInfo] a JOIN cte b ON a.ProxyID = b.belongsAgent WHERE a.belongsAgent <> -1) INSERT #ProxyInfo ( belongsAgent, assignProportion ) SELECT BS_ProxyInfo.ProxyID, assignProportion FROM cte LEFT JOIN [QPProxyDB].[dbo].[BS_ProxyInfo] ON BS_ProxyInfo.ProxyID = cte.belongsAgent ORDER BY BS_ProxyInfo.belongsAgent ASC; ---游标更新删除当前数据 ---1.声明游标 DECLARE cursor01 CURSOR SCROLL FOR SELECT * FROM #ProxyInfo ORDER BY belongsAgent ASC; DECLARE @AllTax INT SET @AllTax =@Score --2.打开游标 OPEN cursor01; --3.声明游标提取数据所要存放的变量 DECLARE @belongsAgent INT, @assignProportion TINYINT; --4.定位游标到哪一行 FETCH FIRST FROM cursor01 INTO @belongsAgent, @assignProportion; --into的变量数量必须与游标查询结果集的列数相同 WHILE @@fetch_status = 0 --提取成功,进行下一条数据的提取操作 BEGIN SET @AllTax=@assignProportion*@AllTax/100 UPDATE [QPProxyDB].[dbo].[BS_ProxyInfo] SET allTax+=@AllTax WHERE ProxyID=@belongsAgent FETCH NEXT FROM cursor01 INTO @belongsAgent, @assignProportion; --移动游标 END; CLOSE cursor01; DEALLOCATE cursor01; DROP TABLE #ProxyInfo;
- 一个简单的小程序演示Unity的三种依赖注入方式
- 在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回
- 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?
- ASP.NET MVC是如何运行的(4): Action的执行
- ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用
- 在Entity Framework中使用存储过程(五):如何通过存储过程维护多对多关系?
- ASP.NET MVC下基于异常处理的完整解决方案
- 不到40行代码构建正则表达式引擎
- 随便写一篇文章
- Java 10新特性解密
- Android组件化框架项目详解
- ScheduledThreadPoolExecutor原理探究
- TensorFlow下载与安装
- Kotlin基础之内联函数
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 多对一和一对多
- 使用C3P0连接数据库
- QQ授权,接收代码发送的电子邮件
- c:set
- 37道Python经典面试题(附答案),看完面试不愁了
- 错误提示合集--->待增加 Σ( ° △ °|||)︴
- RabbitMQ如何保证消息的可靠投递?
- Python处理json总结
- 使用SpringMVC写一个简单的跳转界面
- 使用自定义注解,设置发送到客户端的响应的内容类型
- Python构造数据的神器库-Faker
- SpringMVC中传参date类型失败,需要@DateTimeFormat(““)
- new ScalarHandler()-->返回值为long,不能用int接收!!!
- JavaWeb使用德鲁伊(略)实现登录、激活码注册(发送激活码到邮箱,点击激活链接后,才能正常登陆)、注册界面
- 转发的两种方式与重定向