?通过临时表进行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 [email?protected] 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 [email?protected]
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 [email?protected] END
END TRY BEGIN CATCH if(@@trancount>0)
ROLLBACK TRANSACTION
END CATCH if(@@trancount>0) COMMIT
-----删除临时表--------DROP TABLE #tempfensitocity END
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|