zoukankan      html  css  js  c++  java
  • SQLSERVER 复制同一张表的递归结构

     1 CREATE PROCEDURE [dbo].[Pro_Copy]
     2     @OLDJiFenSeriesId VARCHAR(100),
     3     @NEWJiFenSeriesId VARCHAR(100)
     4 AS
     5 
     6 BEGIN
     7     DECLARE @TAB TABLE(
     8         [F_Id] [varchar](50) NOT NULL,
     9         [F_ParentId] [varchar](50) NULL,
    10         [JiFenSeriesId] [varchar](50) NULL,
    11         [F_EnCode] [varchar](50) NULL,
    12         [PerformanceConfigurationName] [varchar](50) NULL,
    13         [PerformanceConfigurationMin] [decimal](18, 2) NULL,
    14         [PerformanceConfigurationMax] [decimal](18, 2) NULL,
    15         [F_IsTree] [bit] NULL,
    16         [F_Layers] [int] NULL,
    17         [F_SortCode] [int] NULL,
    18         [F_DeleteMark] [bit] NULL,
    19         [F_EnabledMark] [bit] NULL,
    20         [F_Description] [varchar](500) NULL,
    21         [F_CreatorTime] [datetime] NULL,
    22         [F_CreatorUserId] [varchar](50) NULL,
    23         [F_LastModifyTime] [datetime] NULL,
    24         [F_LastModifyUserId] [varchar](50) NULL,
    25         [F_DeleteTime] [datetime] NULL,
    26         [F_DeleteUserId] [varchar](50) NULL
    27     )
    28     INSERT INTO @TAB SELECT * FROM JiFenPerformanceConfiguration WHERE [JiFenSeriesId]=@OLDJiFenSeriesId
    29 
    30     UPDATE @TAB SET F_Id= NEWID() 
    31 
    32     DECLARE MyCursor CURSOR    
    33     FOR SELECT F_ParentId FROM JiFenPerformanceConfiguration WHERE  [JiFenSeriesId]=@OLDJiFenSeriesId
    34    
    35     OPEN MyCursor
    36 
    37     DECLARE @F_ParentId VARCHAR(50)
    38         FETCH NEXT FROM  MyCursor INTO @F_ParentId
    39         WHILE @@FETCH_STATUS =0
    40             BEGIN
    41                 --获取原始表的Name 找到他的上一级
    42                 DECLARE @ID NVARCHAR(50),
    43                 @NAME NVARCHAR(100)
    44                 SET @ID =(SELECT F_Id FROM JiFenPerformanceConfiguration  WHERE [JiFenSeriesId]=@OLDJiFenSeriesId and F_Id=@F_ParentId)
    45                 SET @NAME =(SELECT PerformanceConfigurationName FROM JiFenPerformanceConfiguration  WHERE [JiFenSeriesId]=@OLDJiFenSeriesId and F_Id=@F_ParentId)
    46                 IF(@ID<>'')
    47                     BEGIN
    48                          Update @TAB SET F_ParentId =(SELECT F_Id FROM @TAB WHERE PerformanceConfigurationName=@NAME) WHERE F_ParentId=@ID
    49                     END
    50                 FETCH NEXT FROM  MyCursor INTO @F_ParentId
    51             END
    52         CLOSE MyCursor
    53         DEALLOCATE MyCursor
    54     UPDATE @TAB SET JiFenSeriesId=@NEWJiFenSeriesId
    55 
    56     INSERT INTO JiFenPerformanceConfiguration SELECT * FROM  @TAB
    57 
    58 END
  • 相关阅读:
    eslint 屏蔽html的检查
    css 自定义悬浮窗写法
    echarts象形图图例显示问题
    win10上rocketMQ的部署过程
    死锁以及如何避免死锁
    volatile的一个例子-通俗易懂
    Java四种引用类型
    记录下:安全|API接口安全性设计(防篡改和重复调用)
    了解聚集索引,非聚集索引,联合索引,索引覆盖
    mybatis 查询树形结构
  • 原文地址:https://www.cnblogs.com/yuming1983/p/6212481.html
Copyright © 2011-2022 走看看