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
  • 相关阅读:
    我的QT5学习之路(二)——第一个程序
    我的QT5学习之路(目录)
    我的QT5学习之路(一)——浅谈QT的安装和配置
    memcpy、memmove、memset、memchr、memcmp、strstr详解
    UDP 单播、广播和多播
    C++重载操作符operator
    testNG官方文档翻译-4 运行TestNG
    testNG官方文档翻译-3 testng.xml
    testNG官方文档翻译-2 注解
    testNG官方文档翻译-1 简介
  • 原文地址:https://www.cnblogs.com/yuming1983/p/6212481.html
Copyright © 2011-2022 走看看