1. CREATE PROCEDURE [dbo].[Pro_Copy]
  2. @OLDJiFenSeriesId VARCHAR(),
  3. @NEWJiFenSeriesId VARCHAR()
  4. AS
  5.  
  6. BEGIN
  7. DECLARE @TAB TABLE(
  8. [F_Id] [varchar]() NOT NULL,
  9. [F_ParentId] [varchar]() NULL,
  10. [JiFenSeriesId] [varchar]() NULL,
  11. [F_EnCode] [varchar]() NULL,
  12. [PerformanceConfigurationName] [varchar]() NULL,
  13. [PerformanceConfigurationMin] [decimal](, ) NULL,
  14. [PerformanceConfigurationMax] [decimal](, ) 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]() NULL,
  21. [F_CreatorTime] [datetime] NULL,
  22. [F_CreatorUserId] [varchar]() NULL,
  23. [F_LastModifyTime] [datetime] NULL,
  24. [F_LastModifyUserId] [varchar]() NULL,
  25. [F_DeleteTime] [datetime] NULL,
  26. [F_DeleteUserId] [varchar]() 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()
  38. FETCH NEXT FROM MyCursor INTO @F_ParentId
  39. WHILE @@FETCH_STATUS =
  40. BEGIN
  41. --获取原始表的Name 找到他的上一级
  42. DECLARE @ID NVARCHAR(),
  43. @NAME NVARCHAR()
  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

SQLSERVER 复制同一张表的递归结构的更多相关文章

  1. 使用sql语句复制一张表

    如何使用sql语句复制一张表? 方法一:第一步:先建一张新表,新表的结构与老表相等. create table newbiao like chengjibiao(老表名); 第二步:将老表中的值复制到 ...

  2. 如何用sql语句复制一张表

    如何用sql语句复制一张表 1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete ...

  3. Insert select 带选择复制一张表到另一张表

    使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了. 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,fi ...

  4. oracle 快速复制一张表,并在此创建索引,日志及并行度

    复制表结构及其数据 create table table_name_new as select * from table_name_old 只复制表结构 create table table_name ...

  5. 使用sql语句备份一张表

    如何使用sql语句复制一张表? 方法一:第一步:先建一张新表,新表的结构与老表相等. create table newtable like oldtable; 第二步:将老表中的值复制到新标中. in ...

  6. SqlServer将表中数据复制到另一张表

    insert into phone2(ph,attr,type,carrier) select top 1000 ph,attr,type,carrier from phone 将表phone的字段和 ...

  7. SQLSERVER中如何快速比较两张表的不一样

    SQLSERVER中如何快速比较两张表的不一样 不知不觉要写2014年的最后一篇博文了~ 一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面 我这里罗列了一些如何从 ...

  8. 【SqlServer】【问题收集】删除同一张表中完全相同的记录

    1   概述 在Sqlserver中,当通过SqlServer设计器删除同一张表中两条完全相同的记录时,会弹出如下提示: 点击“是” 弹出如下提示,不让删除 2   问题解决 这个问题很简单,用DEL ...

  9. [MySQL] 同步一张表、复制过滤设置

    一.缘由 据测试要求,需要把线上一张股票信息的表实时同步到测试环境,那么干吧,这次不复制库,单独复制表. 二.解决办法 可以按照同步(复制)库的方法来,在salve端设置 my.cnf,replica ...

随机推荐

  1. android SDK 离线下载更新

    http://blog.csdn.net/harvic880925/article/details/37913801 前言:在公司配置eclipse做android开发,真是烦死了,不知公司做了哪门子 ...

  2. 更新UI界面的四种方法

    一.runOnUiThread(new Runnable()): 二.Handler的sendMessage()系列: 三.Handler的post(): 四.View的post():

  3. hdu 2088

    ps:  超级超级水的一道题....就是格式问题要注意... 除了第一个数据,其他的每个数据都要有个空行比如: 4 1 2 3 4 3 4 //这是空行 1 2 3 4 3 4 //这是空行 代码: ...

  4. JS截取字符串常用方法详细整理

    使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str="jpg|bmp|gif|ico|png" ...

  5. 学习SVG系列(3):SVG Stroke属性

    SVG stroke 属性 1.stroke 2.stroke-width 3.stroke-linecap 4.stroke-dasharray 5.stroke-opacity 6.stroke- ...

  6. BZOJ 3675 序列分割

    斜率优化.注意要判分母为0的情况.dp数组可以滚一维. #include<iostream> #include<cstdio> #include<cstring> ...

  7. LayaAir引擎——(九)

    var h = new Array(); var j = new Array(); var xbCursor = 0; function xbinit() { xbinitName(); xbRect ...

  8. 黑马------synchronized详解

    黑马程序员:Java培训.Android培训.iOS培训..Net培训 JAVA线程-synchronized详解 一.synchronized概述 1.线程间实现互斥,必须使用同一个监视器(一个对象 ...

  9. [转] Jenkins实战演练之Windows系统节点管理

    [前提] 通过<Jenkins实战演练之Windows服务器快速搭建>(http://my.oschina.net/iware/blog /191818)和<Jenkins实战演练之 ...

  10. CoInitialize浅析二

    最近工作比较忙,在粗略分析了CoInitialize之后我们一直没有再深入研究,下面言归正传.前面我们初步了解到了CoInitialize其实是通过调用CoInitializeEx来实现功能的,而后者 ...