本来简单的双层游标没啥的,内层游标需要读取的是视图的内容,一直报“当前命令发生了严重错误。应放弃任何可能产生的结果。”的错误。无可奈何尝试先将视图的数据放到表变量中,之后再用游标遍历表变量。

简直很怀念Oracle的FOR IN SELECT

丢串代码纪念一下我的一上午。555.。。

-----------全局变量发送定时任务的方法的所有参数-------------

--*****************************--[遍历数据表查找临近期末时间的任务,任务前7天发任务给负责人和办理人]begin*********************************---
DECLARE QM_cursor CURSOR SCROLL FOR
--筛选距离任务的规定完成时间只剩7天的任务
SELECT Id FROM xxzx_NewBmOa01..CommTable_Dbsxlx WHERE IsDel='否' AND (SELECT
DATEDIFF(dd,GETDATE(), d1))=7 AND GETDATE()<d1
OPEN QM_cursor
DECLARE @v_ID2 VARCHAR(20)
FETCH NEXT FROM QM_cursor INTO @v_ID2
WHILE @@FETCH_STATUS=0
BEGIN
----------------------内层游标循环-----------------------------
/*流程信息表的视图V_GetSignature不支持游标循环遍历
我们先创建一个表变量@Userinfo将视图信息记录
之后利用游标将表变量中的数据取出
*/
DECLARE @Userinfo TABLE
(
XingMing VARCHAR(50),--姓名
GongHao VARCHAR(50),--工号
BuZhou VARCHAR(10)--流程步骤 根据流程步骤的接收人判断该人是负责人 还是 办理人
);
INSERT INTO @Userinfo(XingMing, GongHao,BuZhou)
SELECT ReciveUserName, ReciveUserGh,NowStep FROM NewBmOa..V_GetSignature WHERE GwId=@v_ID2 AND StepKey='xxzxsolft559753607-2194.Step'
DECLARE BBL_cursor CURSOR SCROLL FOR
SELECT XingMing,GongHao,BuZhou FROM @Userinfo
OPEN BBL_cursor
DECLARE @V_ReciveUserGh VARCHAR(50)--人员工号
DECLARE @V_ReciveUserName VARCHAR(50)--人员姓名
DECLARE @V_NowStep VARCHAR(10)--步骤
FETCH NEXT FROM BBL_cursor INTO @V_ReciveUserName,@V_ReciveUserGh,@V_NowStep
WHILE @@FETCH_STATUS=0
BEGIN
IF @V_NowStep=''--负责人
PRINT('需要给['+@V_ReciveUserName+'][责任人]发送[期末]桌面任务'+@V_ReciveUserGh)
IF @V_NowStep=''--办理人
PRINT('需要给['+@V_ReciveUserName+'][办理人]发送[期末]桌面任务'+@V_ReciveUserGh)
FETCH NEXT FROM BBL_cursor INTO @V_ReciveUserName,@V_ReciveUserGh,@V_NowStep
END
CLOSE BBL_cursor
DEALLOCATE BBL_cursor
DELETE @Userinfo WHERE 1=1;--清空表变量中的数据
--------------------------------------------------------
FETCH NEXT FROM QM_cursor INTO @v_ID2
END
CLOSE QM_cursor
DEALLOCATE QM_cursor
--*****************************--[遍历数据表查找临近期末时间的任务,任务前7天发任务]end*********************************--- --*****************************--[遍历数据表查找到达期中时间的任务,当天发任务给负责人和办理人]begin*********************************---
DECLARE QZ_cursor CURSOR SCROLL FOR
--筛选距离任务的规定完成时间只剩7天的任务
SELECT Id FROM xxzx_NewBmOa01..CommTable_Dbsxlx WHERE IsDel='否' AND convert(char(10),GETDATE(),111)=convert(char(10),d2,111)
OPEN QZ_cursor
DECLARE @v_ID VARCHAR(20)
FETCH NEXT FROM QZ_cursor INTO @v_ID
WHILE @@FETCH_STATUS=0
BEGIN
----------------------内层游标循环-----------------------------
/*流程信息表的视图V_GetSignature不支持游标循环遍历
我们先创建一个表变量@Userinfo2将视图信息记录
之后利用游标将表变量中的数据取出
*/
DECLARE @Userinfo2 TABLE
(
XingMing VARCHAR(50),--姓名
GongHao VARCHAR(50),--工号
BuZhou VARCHAR(10)--流程步骤 根据流程步骤的接收人判断该人是负责人 还是 办理人
);
INSERT INTO @Userinfo2(XingMing, GongHao,BuZhou)
SELECT ReciveUserName, ReciveUserGh,NowStep FROM NewBmOa..V_GetSignature WHERE GwId=@v_ID AND StepKey='xxzxsolft559753607-2194.Step'
DECLARE BBL_cursor CURSOR SCROLL FOR
SELECT XingMing,GongHao,BuZhou FROM @Userinfo2
OPEN BBL_cursor
DECLARE @V_NAME VARCHAR(50)--人员工号
DECLARE @V_NUMBER VARCHAR(50)--人员姓名
DECLARE @V_BZ VARCHAR(10)--步骤
FETCH NEXT FROM BBL_cursor INTO @V_NAME,@V_NUMBER,@V_BZ
WHILE @@FETCH_STATUS=0
BEGIN
IF @V_BZ=''--负责人
PRINT('需要给['+@V_NAME+'][责任人]发送[期中]桌面任务'+@V_NUMBER)
IF @V_BZ=''--办理人
PRINT('需要给['+@V_NAME+'][办理人]发送[期中]桌面任务'+@V_NUMBER)
FETCH NEXT FROM BBL_cursor INTO @V_NAME,@V_NUMBER,@V_BZ
END
CLOSE BBL_cursor
DEALLOCATE BBL_cursor
DELETE @Userinfo2 WHERE 1=1;--清空表变量中的数据
--------------------------------------------------------
FETCH NEXT FROM QZ_cursor INTO @v_ID
END
CLOSE QZ_cursor
DEALLOCATE QZ_cursor --*****************************--[遍历数据表查找到达期中时间的任务,当天发任务]end*********************************---

脑阔疼的双层SQLserver游标的更多相关文章

  1. 学JAVA的第二天,静态网站制作,脑阔一点疼

    先从下载apache-tomcat-9.0.17开始 在下边这个网站下载,下边一步步来 下面删除的这些是暂时用不上的,先吧它删除了,因为会拖慢启动速度 下边把ROOT里边除WEB-INF外的全不删除了 ...

  2. Sqlserver游标复习

    经常写存储过程,但今天在游标使用过程中还是疏忽了一些事情,执行过程中一直执行不下去,后来直接sqlserver挂了,教训啊! 代码虽简单,望铭记: Create PROCEDURE [dbo].[te ...

  3. SqlServer游标的创建与使用

    前言 大家都对SqlServer视图.存储过程.触发器的创建与使用有一定的了解了,我们来看下什么是游标,怎么使用,什么时候用. SqlServer视图的创建与使用 SqlServer存储过程的创建与使 ...

  4. sqlserver 游标的使用

    declare @temp_temp uniqueidentifier--临时变量 DECLARE aaa CURSOR for select Id from A ------------------ ...

  5. SqlServer游标简介

    游标实例:             Declare MyCusror Cursor Scroll For Select * From Master_Goods Order By GoodsID Ope ...

  6. sqlserver 游标

    DECLARE ChangeInvCodeCursor CURSOR FOR SELECT A.name AS tablecolumn,C.name AS tablename FROM sys.col ...

  7. SQLServer游标(Cursor) (B)

    游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力.我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许 ...

  8. SQLServer 游标 (A)

    游标 游标分为客户端游标和服务器端游标.Sql通过游标可以对一个结果集进行逐行处理.对于使用服务器端游标的过程有:声明.打开.读取.关闭.释放. 1 声明游标 1.1 SQL-92标准的声明 Decl ...

  9. SQLserver游标原理和使用方法

    在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句.但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录.那么如何解决这种问题呢 ...

随机推荐

  1. nodejs express 设置html后缀模板

    express 框架的默认渲染模板的后缀是 ejs ,由于编译器在ejs的文件里写html代码没有高亮显示,所以使用html模板. 示例: var app = express(); app.set(' ...

  2. cucumber 文件目录结构和执行顺序

    引用链接:http://www.cnblogs.com/timsheng/archive/2012/12/10/2812164.html Cucumber是Ruby世界的BDD框架,开发人员主要与两类 ...

  3. cucumber 背景和场景的区别

    背景是公用的,每个场景都会执行,相当于前提条件: 场景是一个单独的case 别人的cucumber学习总结: 链接:http://ruby-china.org/topics/7119

  4. CentOS远程监控

    近日,因工作需要,学习了CentOS远程监控的水平有限,多指教. 远程访问CentOS,包括三种方式ssh,telnet,vnc. 本例涉及的是以vnc远程访问CentOS.指令在root下操作.注意 ...

  5. 解决Git在更新项目时报凭证错误(Authentication failed)

    报此错误,大概率原因是用户名和密码弄错了,我用的阿里云,在网上找了半天发现Git远程仓库用的用户名和密码不是阿里云登陆用的账户密码,必须另外设置: 链接:code.aliyun.com/profile ...

  6. 中移动TD-LTE 4G设备招标

    移动这是要干吗呢?2%的份额,公司如果没有其他业务,可以消失了 ------------------------------------------------------ 中国移动已经初步确定了各供 ...

  7. 【数据库-MySQL on Azure】如何使用 MySQL EntityFramework 组件处理 MYSQL PaaS DB

    MySQL Database on Azure 是 Azure 平台上推出的 MySQL 云数据库服务,通过全面兼容 MySQL 协议,为用户提供了一个全托管的性能稳定.可快速部署.高可用.高安全性的 ...

  8. codevs 4165 ​高精度求阶乘

    时间限制: 1 s  空间限制: 256000 KB  题目等级 : 白银 Silver 题目描述 Description 用高精度计算出S=n! 其中"!"表示阶乘,例如:5!= ...

  9. NSString+TimeCategory

    NSString+TimeCategory.h //------------------------------------------------ #import <foundation fo ...

  10. (十)maven之排除冲突jar包

    排除冲突jar包 jar包冲突 <dependencies> <dependency> <groupId>org.springframework</group ...