使用while循环和伪列的存储过程如下:

USE [JointFrame2]
GO
/****** Object: StoredProcedure [dbo].[Proc_enterprise_unified_sam_while] Script Date: 2017/04/06 9:39:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--此存储过程将污染源名称相似度大于80%的数据的主子记录标识设置为初始值(while循环方式)
create PROCEDURE [dbo].[Proc_enterprise_unified_sam_while]
AS
--=============================================================================== BEGIN
DECLARE
@id VARCHAR(40), --记录ID
@psname VARCHAR(220), ---污染源名称
@region_code VARCHAR(20), --污染源区域编码
@i BIGINT, --记录主记录总数
@j BIGINT, --记录内层循环的执行
@k BIGINT --记录外层循环的执行
set @k = 1
-- --创建临时表#tb1,用于存放非
-- create table #tab1(
--id varchar(50),
--region_code varchar(20),
--psname varchar(220)
-- )
--创建临时表#tb2用于存储相似度大于80%的数据
create table #tab2(
id varchar(50)
) select RowNum=IDENTITY(INT,1,1),id,region_code,psname into #tab1 from t_unified_enterprise_info where main_or_child = 1 and system_source != 0 select @i = max(RowNum) from #tab1
while(@i>@k)
BEGIN
--查找当前条数据,将其ID赋值给@id,将region_code赋值给@region_code,将psname赋值给@psanme
select @id = id,@region_code = region_code,@psname = psname from #tab1 where RowNum = @k
--将相似度超过80%的数据存放到临时表#tb2中
insert into #tab2
select id from (
select *,( CASE when u.a1=1 then 1
when u.b1=1 then 1
else 0 end) as c1 from (
SELECT id,psname,dbo.FN_Resemble(@psname,psname) as a1,dbo.FN_Resemble(psname,@psname) as b1
FROM [dbo].[t_unified_enterprise_info] where region_code=@region_code)u where u.a1>=0.6) uu
where (uu.a1+uu.b1)/2>0.8 select @j = count(*) from #tab2 if(@j>1)
BEGIN
print @k
-- update t_unified_enterprise_info set main_or_child = 0,parentid = NULL,unique_code = NULL where id in (select id from #tab2)
END
set @k = @k + 1
delete from #tab2
END delete from #tab1
END
--drop table #tab1
--drop table #tab2 --exec [Proc_enterprise_unified_sam_while]

使用while循环和伪列的存储过程的更多相关文章

  1. Oracle Schema Objects——Sequences(伪列:nextval,currval)

    Oracle Schema Objects 序列的作用 许多的数据库之中都会为用户提供一种自动增长列的操作,例如:在微软的Access数据库之中就提供了一种自动编号的增长列(ID列).在oracle数 ...

  2. oracle(sql)基础篇系列(三)——数据维护语句、数据定义语句、伪列

      DML语句 insert 向表中插入新的记录   --三种插入方式 --(1)不写字段的名字,直接按照字段的顺序把值逐个往里插 insert into dept2 values(50,'DANAM ...

  3. Oracle 中的伪列

    昨天做了一个Oracle PL/SQL 相关的测试,其中有一道这样的题目:   下列那些是Oracle的伪列(ACD)  A.ROWID   B.ROW_NUMBER()  C.LEVEL  D.RO ...

  4. SQL基础--ROWNUM伪列

    ROWNUM伪列 的概念: rownum表示的是一个数据行编号的伪列,它的内容是在用户查询数据时,为用户动态分配的一个数组(行号). 注意它是随机生成的,并不是和某一行数据绑定在一起的. 观察rown ...

  5. rownum和rowid伪列

    select row employee_id,last name,salary from employees; select row employee_id,last name,salary from ...

  6. ROWID伪列

    ROWID伪列概念: 在数据表中每一行所保存的记录,oracle会为每条记录分配一个唯一的地址编号,这个编号就是通过ROWID表示的. 所有的数据都利用ROWID进行定位. 观察rowid的存在 SQ ...

  7. Oracle分页查询=======之伪列的使用

    ========伪列========== 在Oracle数据库中,伪列不存在表中,但是可以从表中查询到 例如:SELECT ROWID 伪列,tname 教师姓名 FROM teacher; ==== ...

  8. oracle之rownum(伪列)

    整理和学习了一下网上高手关于rownum的帖子: 参考资料:  http://tech.ddvip.com/2008-10/122490439383296.html 和 http://tenn.jav ...

  9. Oracle中的伪列

    分页查询中,需要用到伪列rownum,代码如下: select * from (select rownum rn, name from cost where rownum <= 6) where ...

随机推荐

  1. Skip-External-Locking – MySQL性能参数详解

    MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参数,即“跳过外部锁定”.根据MySQL开发网站的官方解释,External-locking用于多进程条件下为 ...

  2. Openfire更服务器名称后报Found RSA certificate that is not valid for the server domain的解决方法

    原文:http://blog.sina.com.cn/s/blog_ae5a3d3f0102wdrb.html Openfire更服务器名称的方法: 1.登陆openfire管理页面,在主页面下方选择 ...

  3. 【spring cloud】分布式ID,雪花算法

    分布式ID生成服务 参考地址:https://blog.csdn.net/wangkang80/article/details/77914849 算法描述: 最高位是符号位,始终为0,不可用. 41位 ...

  4. Maven:Maven 入门

    背景 几乎所有的主流平台都提供了依赖管理工具,如:.Net 的 Nuget.Ruby 的 Gem.Node 的 Npm等,今天简单的解释一下如何使用 Maven,以及最常见的问题. 下载 Maven ...

  5. tornado框架介绍

    一.安装tornado 手动安装: 下载 tornado-1.2.1.tar.gz tar xvzf tornado-1.2.1.tar.gz cd tornado-1.2.1 python setu ...

  6. json 数组操作

    用js有很久了,但都没有深究过js的数组形式.这段时间做的一个项目,用到数组的地方很多,自以为js还可以的自己居然无从下手,一下狠心,我学!呵呵. 1.数组的创建 var arrayObj = new ...

  7. Android4.2.2 Gallery2源码分析(5)——GLCanvasImpl.java

    GLCanvasImpl.java是接口GLCanvas的唯一实现类,也就是说二者在功能上完全等同.代码中调用GLCanvas对象函数的地方,等效于调用GLCanvasImpl中的该函数,GLCanv ...

  8. 使用javascript开发的视差滚动效果的云彩

    在线演示 jquery.parallax.js是一款能够帮助你快速开发视差效果的jQuery插件,在这里我们使用它来开发一款漂亮的云朵视差效果. 主要代码: Javascript ........ 阅 ...

  9. UVA 10405 Longest Common Subsequence (dp + LCS)

    Problem C: Longest Common Subsequence Sequence 1: Sequence 2: Given two sequences of characters, pri ...

  10. [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

    大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3 ...