使用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 ...
随机推荐
- JavaScript中数组的各种操作方法
[监测数组] 使用instanceof操作符,进行检测 ar arr = [1,2,3]; // arr = '非非'; if(arr instanceof Array){ console.log(' ...
- maven编译错误,警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除
修改红色部分版本号为2.3.2 <plugin> <groupId>org.apache.maven.plugins& ...
- ASP.NET 5 Beta6发布了(翻译)
感觉就好像我们刚刚发布了一个版本,现在我们又要发布一个新的版本.开发团队通过努力工作在Visual Studio2015的正式版上提交使用ASP.NET 5开发工具的上的更新以及库的更新.新的版本为b ...
- 数学图形(2.9) Capareda曲线
还是绕在球上的线圈 #http://www.mathcurve.com/courbes3d/capareda/capareda.shtml vertices = t = to (*PI) q = ra ...
- js轮播功能 标签自动切换 同页面多轮播js
需要加入jquery 1.43及以上版本 下面还有个简单版,一个页面只支持一个轮播 同页面多轮播js <div> <div class="yt_content"& ...
- build path libraries java基础--Jar包添加到build path方式说明--01
摘自: http://blog.csdn.net/haolongabc/article/details/7007701 java基础--Jar包添加到build path方式说明--01 前言:这段短 ...
- springmvc+jsp引用本地图片文件
1.图片文件路径,注意图片文件夹和WEB-INFO文件夹同级 2.web.xml配置 <servlet-mapping> <servlet-name>default</s ...
- Android WebView File域同源策略绕过漏洞浅析
0x00 我们首先讲一个webView这种方法的作用: webView.getSettings().setAllowFileAccessFromFileURLs(false); ...
- 转:美团Android资源混淆保护实践
转自:http://tech.meituan.com/mt-android-resource-obfuscation.html 前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被 ...
- Oracle spatial抽稀函数(SDO_UTIL.SIMPLIFY)
在使用Oracle spatial做空间查询和展示时,经常会遇到展示或者查询过慢,这时候我可以通过空间数据抽稀来优化查询展示效率. 在Oracle spatial中的抽稀函数为:SDO_UTIL.SI ...