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

简直很怀念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. PHP中的文件操作

      文件系统的概述 任何类型的变量在运行的时候都是将其加载到内存里面.但是内存有一个特点:CPU读取内存的速度很快,但是一旦断电,内存里面的数据就会消失.如果要持久的保存数据,有两种方法:将数据存储到 ...

  2. WPF中获取指定坐标依赖对象数据项

    上图中红色框区域是一个自定义的ListBox控件,需要实现的功能是,点击红框区域中某项时,获取当前选中项的数据项 控件的MouseDown事件部分代码为: var x = TreeHelper.Fin ...

  3. .Net 遍历目录下第一层的子文件夹和子文件夹里的文件

    今天再完成一道任务的时候需要遍历得到所有txt文件,搜索很久终于得到了一个很方便的方法. foreach (string o in Directory.GetDirectories(@"D: ...

  4. ES-windos环搭建-ik中文分词器

    ik下载 打开Github官网,搜索elasticsearch-analysis-ik,单击medcl/elasticsearch-analysis-ik.或者直接点击 在readme.md文件中,下 ...

  5. nagios的一些东西

    make install 用来安装nagios的主程序,cgi和html文件 make install-init 在/etc/rc.d/init.d目录下创建nagios启动脚本 make insta ...

  6. C# DataTable的詳細用法 (转)

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...

  7. 电脑公司最新稳定win7系统下载

    系统来自系统妈:http://www.xitongma.com 系统概述 电脑公司ghost win7 x86(32位)万能装机版集成的软件符合电脑公司及电脑城装机绝大多数人要求及喜好,既大众,又时尚 ...

  8. UVA 1347 Tour 双调TSP

    TSP是NP难,但是把问题简化,到最右点之前的巡游路线只能严格向右,到最右边的点以后,返回的时候严格向左,这个问题就可以在多项式时间内求出来了. 定义状态d[i][j]表示一个人在i号点,令一个人在j ...

  9. WPF中引入外部资源

    有时候需要在WPF中引入外部资源,比如图片.音频.视频等,所以这个常见的技能还是需要GET到. 第一步:在VS中创建一个WPF窗口程序 第二步:从外部引入资源,这里以引入图片资源为例 1)新建Reso ...

  10. visual c++ build tools的安装与使用

    https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=BuildTools&r ...