sqlserver sql 循环
通过临时表进行sql循环
-----------创建临时表--------------
SELECT * INTO #tempfensitocity
FROM(
SELECT * FROM dbo.Swb_Jc_FenGongSi fs WHERE
NOT EXISTS
(
SELECT * FROM dbo.Swb_Jc_FenGongSi AS A INNER JOIN dbo.Swb_Electronic_City AS B
ON A.FenGongSiID=B.FengGongSiID WHERE fs.FenGongSiID=B.FengGongSiID
)
) AS A
DECLARE @fengongsiid INT
DECLARE @chengshiid INT
DECLARE @parentid INT
DECLARE @iscity int
DECLARE @isjoin INT
DECLARE @cityid INT
DECLARE @cityname VARCHAR(100)
BEGIN TRANSACTION
BEGIN TRY
---循环插入----
WHILE EXISTS (SELECT 1 FROM #tempfensitocity)
BEGIN
set @parentid =NULL
SET @cityid=null
------拿到一条分公司id-------
SELECT TOP 1 @fengongsiid=FenGongSiID,@cityname=GongSiMingCheng,@iscity= CASE when IsCity=1 THEN 1 ELSE
0 end,@isjoin=IsJoin FROM #tempfensitocity
--------取得对应的@parentid-----------------
SELECT @parentid=A.FenGongSiID FROM dbo.Swb_Jc_FenGongSi AS A WHERE EXISTS
(
SELECT 1 FROM dbo.Swb_Jc_FenGongSi AS B WHERE B.FenGongSiID=@fengongsiid AND
B.NewCityName=A.GongSiMingCheng
)
---------取得cityid--------------------
IF(@parentid IS null)
SELECT @cityid= MAX(CityID)+1 FROM Swb_Electronic_City
ELSE
SELECT @cityid=CityID FROM Swb_Electronic_City WHERE FengGongSiID=@parentid
IF(@cityid IS null)
SELECT @cityid= MAX(CityID)+1 FROM Swb_Electronic_City
---------取得城市id------------
SELECT @chengshiid= MAX(ChengShiID)+1 FROM Swb_Electronic_City
INSERT INTO dbo.Swb_Electronic_City(
ChengShiID,CityName,FengGongSiID,CityID,ParentID,IsCity,IsJoin,IsEnable
,ExtendType,CreatDate)
VALUES
(
@chengshiid,@cityname,@fengongsiid,@cityid,@parentid,@iscity,@isjoin,NULL,1,GETDATE()
)
DELETE #tempfensitocity WHERE FenGongSiID=@fengongsiid
END
END TRY
BEGIN CATCH
if(@@trancount>0)
ROLLBACK TRANSACTION
END CATCH
if(@@trancount>0)
COMMIT
-----删除临时表--------
DROP TABLE #tempfensitocity
END
sqlserver sql 循环的更多相关文章
- Sqlserver Sql Agent Job 只能同时有一个实例运行
Sqlserver Sql Agent中的Job默认情况下只能有一个实例在运行,也就是说假如你的Sql Agent里面有一个正在运行的Job叫"Test Job",如果你现在再去启 ...
- SQL循环语句 详解
SQL循环语句 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+ ...
- sql 循环 ,随机数,循环插入一年数据
--循环插入一年的时间 DROP TABLE #temp CREATE TABLE #temp (date DATETIME); DECLARE @year INT ; WITH a1 AS ( SE ...
- PL/SQL 循环语句
1.基本 LOOP 循环语句 语法: LOOP 语句序列; END LOOP; 其中,语句序列中需要一个EXIT语句或一个EXIT WHEN语句来中断循环. 实例: DECLARE x ) :; BE ...
- SQLSERVER SQL性能优化技巧
这篇文章主要介绍了SQLSERVER SQL性能优化技巧,需要的朋友可以参考下 1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理F ...
- 在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值)
原文:在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. sql循环取差值,该怎 ...
- ql/sql 循环语句、异常处理、事务处理!
一.ql sql 循环语句? /*1.loop循环 语法: 声明循环变量 loop 判断循环条件 ,如果循环条件不成立,跳出循if 条件表达式 then exit; end if; 语句块; 改变循环 ...
- PL/SQL循环
1.if循环做判断 SET SERVEROUTPUT ON accept num prompt 'qinshuu'; DECLARE pnum NUMBER :=& num ; BEGIN T ...
- SQL 循环语句 while 介绍 实例
declare @i int begin insert into test (userid) values(@i) end --------------- while 条件 begin 执行操作 en ...
随机推荐
- The CHAR and VARCHAR Types
[The CHAR and VARCHAR Types] The CHAR and VARCHAR types are declared with a length that indicates th ...
- U3D框架—单例框架
写程序应遵循的原则:高内聚(内容的聚合),低耦合(功能与功能之间的联系) 代码里尽量不要有冗余:既重复,没有用的代码 using System.Collections; using System.Co ...
- MONGO的简单语法,新手实用
window上启动方式:(简单略) mongod --dbpath E:\study_lib\mongodb\db --port=27000 show dababases; (创建配置文件的启动方式) ...
- SML + NL + HJ
Join是一种试图将两个表结合在一起的谓词,一次只能连接2个表,表连接也可以被称为表关联.在后面的叙述中,我们将会使用”row source”来代替”表”,因为使用row source更严谨一些,并且 ...
- SpringCloud报错:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
启动SpringCloudEureka 报错:com.netflix.discovery.shared.transport.TransportException: Cannot execute req ...
- LCS poj1080
题目链接:https://vjudge.net/problem/POJ-1080 参考博客:https://yq.aliyun.com/ziliao/372259 题意:给两个字符串,只含有'A',' ...
- 测试--错误java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=select], {ExactMatcher:fDisplayName=select(com.rjj.demo.DemoApplicationTests)]...
异常这个错误java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=select], {ExactMatche ...
- 网页请求get方式
方法都是博客中的大神写的,谢谢各路大神. 方法一:(亲测有效) //Get请求方式 private string RequestGet(string Url) { string PageStr = s ...
- [leetcode]694. Number of Distinct Islands你究竟有几个异小岛?
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- Linux配置Nginx负载均衡
nginx配置负载均衡其实很简单,一直还以为负载均衡是个很高端人士玩的 首先先了解下负载均衡,假设一个场景,如果有1000个客户同时访问你服务器时,而你只有一台服务器的Nginx,且只有一个MySQL ...