使用while循环和伪列的存储过程
使用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循环和伪列的存储过程的更多相关文章
- Oracle Schema Objects——Sequences(伪列:nextval,currval)
Oracle Schema Objects 序列的作用 许多的数据库之中都会为用户提供一种自动增长列的操作,例如:在微软的Access数据库之中就提供了一种自动编号的增长列(ID列).在oracle数 ...
- oracle(sql)基础篇系列(三)——数据维护语句、数据定义语句、伪列
DML语句 insert 向表中插入新的记录 --三种插入方式 --(1)不写字段的名字,直接按照字段的顺序把值逐个往里插 insert into dept2 values(50,'DANAM ...
- Oracle 中的伪列
昨天做了一个Oracle PL/SQL 相关的测试,其中有一道这样的题目: 下列那些是Oracle的伪列(ACD) A.ROWID B.ROW_NUMBER() C.LEVEL D.RO ...
- SQL基础--ROWNUM伪列
ROWNUM伪列 的概念: rownum表示的是一个数据行编号的伪列,它的内容是在用户查询数据时,为用户动态分配的一个数组(行号). 注意它是随机生成的,并不是和某一行数据绑定在一起的. 观察rown ...
- rownum和rowid伪列
select row employee_id,last name,salary from employees; select row employee_id,last name,salary from ...
- ROWID伪列
ROWID伪列概念: 在数据表中每一行所保存的记录,oracle会为每条记录分配一个唯一的地址编号,这个编号就是通过ROWID表示的. 所有的数据都利用ROWID进行定位. 观察rowid的存在 SQ ...
- Oracle分页查询=======之伪列的使用
========伪列========== 在Oracle数据库中,伪列不存在表中,但是可以从表中查询到 例如:SELECT ROWID 伪列,tname 教师姓名 FROM teacher; ==== ...
- oracle之rownum(伪列)
整理和学习了一下网上高手关于rownum的帖子: 参考资料: http://tech.ddvip.com/2008-10/122490439383296.html 和 http://tenn.jav ...
- Oracle中的伪列
分页查询中,需要用到伪列rownum,代码如下: select * from (select rownum rn, name from cost where rownum <= 6) where ...
随机推荐
- FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制
转载:http://blog.csdn.net/zm2714/article/details/7916440 给朋友做的一个项目中,涉及到上传视频.转换视频.自动截取已上传视频内容中的一帧做为缩略图片 ...
- Plugin with id 'com.github.dcendents.android-maven' not found
导入开源项目的时候老是报这个错 Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found 挺郁闷的,不知道是 ...
- leetcode笔记:First Bad Version
一. 题目描写叙述 You are a product manager and currently leading a team to develop a new product. Unfortuna ...
- -bash: ./xxx.sh: /bin/bash^M: bad interpreter: No such file or directory
问题的原因是在windows下编辑然后上传到linux系统里执行的..sh文件的格式为dos格式.而linux只能执行格式为unix格式的脚本. 不要使用记事本编辑,使用代码编辑器可以正常执行
- 【Networking】Libevent客户端例子
[原]Libevent客户端例子 时间 -- :: luotuo44的专栏 原文 http://blog.csdn.net/luotuo44/article/details/34416429 主题 l ...
- 多个Mapper和Reducer的Job
多个Mapper和Reducer的Job @(Hadoop) 对于复杂的mr任务来说,只有一个map和reduce往往是不能够满足任务需求的,有可能是需要n个map之后进行reduce,reduce之 ...
- Vc++内存布局
Vc++内存布局 测试平台 Windows server 2012 R2 and visual studio 2013 professional. 本篇文章意在介绍vc++中类的内存布局方式,只是研究 ...
- Html中的次方符号怎么写
代码: <p>1.01<sup>365</sup>=37.783,0.99<sup>365</sup>=0.025</p> 效果 ...
- C#基础视频教程6.2 如何简单读写数据库
上一节我们简单介绍了数据库的读写,所使用的数据库都是随便写的(用水果代替,但不是真正的食品零售数据表,至少没有价格,销量等等).这一节我们思考如何实现一个测试题的数据库,所谓的测试题数据库就是假定系统 ...
- linux下停止tomcat
bin/shutdown.sh -force 强行停掉tomcat 重启tomcat的脚本: /home/tomcat/bin/shutdown.sh -force/home/tomcat/bin/s ...