步步为营101-同一个PCode下重复的OrderNumber重新排序


USE [K2_WorkFlow_Test]
GO
/****** Object: StoredProcedure [dbo].[sp_UpdateBPM_DictionaryForOrderNumber] Script Date: 2018/1/4 16:08:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[sp_UpdateBPM_DictionaryForOrderNumber]
--@row int output --受影响行数
as
begin
-- 捕获异常
begin try
-- 创建临时表,用于存储"字典表"中的OrderNumber重复的父编码(Pcode)
IF OBJECT_ID('tempdb.dbo.#devicetemp','U') IS NOT NULL DROP TABLE dbo.#devicetemp;
SELECT Pcode
INTO dbo.#devicetemp
from BPM_Dictionary_Test --注意,这里先拿测试表做测试,上线时换成正式表
Group by Pcode,OrderNumber having count(Pcode) >
-- 声明变量
DECLARE
@Pcode nvarchar() WHILE EXISTS(SELECT Pcode FROM dbo.#devicetemp)
BEGIN
SELECT @Pcode=Pcode FROM dbo.#devicetemp; -- 创建临时表,用于存储"字典表"中当前父编码(Pcode)重复的详细信息
IF OBJECT_ID('tempdb.dbo.#repeatDetailInfotemp','U') IS NOT NULL DROP TABLE dbo.#repeatDetailInfotemp;
begin transaction
SELECT Id,OrderNumber,Pcode
INTO dbo.#repeatDetailInfotemp
FROM BPM_Dictionary_Test where Pcode=@Pcode
ORDER BY OrderNumber desc;
-- 声明变量
DECLARE
@Id AS INT,
@OrderNumber int
set @OrderNumber=
WHILE EXISTS(SELECT Id FROM dbo.#repeatDetailInfotemp)
BEGIN
SELECT @Id=Id FROM dbo.#repeatDetailInfotemp;
UPDATE BPM_Dictionary_Test set OrderNumber=@OrderNumber where Id = @Id;
set @OrderNumber = @OrderNumber +;
SET ROWCOUNT
DELETE FROM dbo.#repeatDetailInfotemp WHERE Id=@Id;
END
commit transaction SET ROWCOUNT DELETE FROM dbo.#devicetemp WHERE Pcode=@Pcode;
END --set @row = @@rowcount
end try
BEGIN catch
rollback transaction
-- set @IsSuccess = '失败!'
END catch end
存储过程
步步为营101-同一个PCode下重复的OrderNumber重新排序的更多相关文章
- python 使用selenium模块爬取同一个url下不同页的内容(浏览器模拟人工翻页)
页面翻页,下一页可能是一个新的url 也有可能是用js进行页面跳转,url不变,解决方法是实现浏览器模拟人工翻页 目标:爬取同一个url下不同页的数据(上述第二种情况) url:http://www. ...
- python实现查看目录下重复的文件
该python 脚本有以下三个功能: 1. 实现查看目录下重复的文件,输出文件按修改时间升序排列 2. 将按修改时间排列比较旧的.可删除的文件列出来 3. 按目录对重复文件进行统计,比如,目录/tmp ...
- IE兼容性问题解决方案4--form表单在IE下重复提交
遇到过一种情况,点击提交按钮的时候,在IE下重复提交,而在其他浏览器下正常. 原因:button按钮不设置type时,在IE下被浏览器默认解析为type="submit",用js提 ...
- iOS 同一个workspace下创建多个项目编程
在iOS开发中,相关联的多个项目可能会放在同一个workspace下进行开发,那习惯了一个项目在一个工作空间下的同学该怎么快速开撸呢? 只需要三步而已! 第一步,先用Xcode在目标目录下创建一个wo ...
- mysql查询同一个字段下,不同内容的语句
太久没有用SQL语句都有些忘记了,今天工作中遇到了那就尝试记录一下吧 需求是这样的:想查询同一个字段下,两条指定了不同内容,的其他的值 主要是要想到用where......in 语句如下:select ...
- 【适合公司业务】全网最详细的IDEA里如何正确新建【普通或者Maven】的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【多个子项目】并存)(图文详解)
不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...
- IntelliJ IDEA导入多个eclipse项目到同一个workspace下
IntelliJ IDEA 与eclipse在新建项目上工作区的叫法略有不同,区别见下图. 我们在eclipse都是在新建的workspace目录下新建我们的项目,但是在IDEA中没有workspac ...
- 对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错。
对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错.步骤如下: 右键新的工程---&g ...
- 用exp、dmp导入导出用户到同一个实例下时,类型type会有问题
oralce的type都有唯一id,在同一个实例下,通过导入导出方法创建type时,会有唯一性问题 最好的解决方法使用impdb,expdb的方式导入导出 用oid=n解决. 实在不行,可用稍微麻烦的 ...
随机推荐
- 虚拟机克隆后无法上网的解决(Centos7为例)
说明:我的虚拟机之前配置的为静态ip 解决步骤: (1)更换mac地址 (2)删除 etc/udev/rules.d/70-persistent-net.rules 删除后重启机器,系统会自动生成一个 ...
- CentOS 7安装Redis
第一步:安装gcc依赖 先通过gcc -v是否有安装gcc,如果没有安装,执行命令 yum install -y gcc(yum install -y gcc-c++) 第二步:下载redis安装包 ...
- java ArrayList、Vector、LinkedList区别
- Samples topic
Rendering: http://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html http://www.scratchapixel.c ...
- SQL Server Profiler 常见问题总结
1.跟踪指定数据库 SELECT DB_ID('数据名称') 原文:https://jingyan.baidu.com/article/647f0115be128a7f2048a87d.html 2. ...
- centos6.9安装crontab
yum install vixie-cron crontabs //安装 chkconfig crond on //开机自启动 service crond start //启动 然后就是执行 cron ...
- hibernate框架学习之Session管理
Session对象的生命周期 lHibernate中数据库连接最终包装成Session对象,使用Session对象可以对数据库进行操作. lSession对象获取方式: •加载所有配置信息得到Conf ...
- hibernate框架学习之持久化对象OID
持久化对象唯一标识——OID 1)数据库中使用主键可以区分两个对象是否相同2)Java语言中使用对象的内存地址区分对象是否相同3)Hibernate中使用OID区分对象是否相同Hibernate认为每 ...
- hibernate框架学习之核心配置文件
hibernate.cfg.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration ...
- linux TLB表
TLB - translation lookaside buffer 快表,直译为旁路快表缓冲,也可以理解为页表缓冲,地址变换高速缓存. 由于页表存放在主存中,因此程序每次访存至少需要两次:一次访存获 ...