CREATE PROCEDURE [dbo].[Pro_Copy]
@OLDJiFenSeriesId VARCHAR(),
@NEWJiFenSeriesId VARCHAR()
AS BEGIN
DECLARE @TAB TABLE(
[F_Id] [varchar]() NOT NULL,
[F_ParentId] [varchar]() NULL,
[JiFenSeriesId] [varchar]() NULL,
[F_EnCode] [varchar]() NULL,
[PerformanceConfigurationName] [varchar]() NULL,
[PerformanceConfigurationMin] [decimal](, ) NULL,
[PerformanceConfigurationMax] [decimal](, ) NULL,
[F_IsTree] [bit] NULL,
[F_Layers] [int] NULL,
[F_SortCode] [int] NULL,
[F_DeleteMark] [bit] NULL,
[F_EnabledMark] [bit] NULL,
[F_Description] [varchar]() NULL,
[F_CreatorTime] [datetime] NULL,
[F_CreatorUserId] [varchar]() NULL,
[F_LastModifyTime] [datetime] NULL,
[F_LastModifyUserId] [varchar]() NULL,
[F_DeleteTime] [datetime] NULL,
[F_DeleteUserId] [varchar]() NULL
)
INSERT INTO @TAB SELECT * FROM JiFenPerformanceConfiguration WHERE [JiFenSeriesId]=@OLDJiFenSeriesId UPDATE @TAB SET F_Id= NEWID() DECLARE MyCursor CURSOR
FOR SELECT F_ParentId FROM JiFenPerformanceConfiguration WHERE [JiFenSeriesId]=@OLDJiFenSeriesId OPEN MyCursor DECLARE @F_ParentId VARCHAR()
FETCH NEXT FROM MyCursor INTO @F_ParentId
WHILE @@FETCH_STATUS =
BEGIN
--获取原始表的Name 找到他的上一级
DECLARE @ID NVARCHAR(),
@NAME NVARCHAR()
SET @ID =(SELECT F_Id FROM JiFenPerformanceConfiguration WHERE [JiFenSeriesId]=@OLDJiFenSeriesId and F_Id=@F_ParentId)
SET @NAME =(SELECT PerformanceConfigurationName FROM JiFenPerformanceConfiguration WHERE [JiFenSeriesId]=@OLDJiFenSeriesId and F_Id=@F_ParentId)
IF(@ID<>'')
BEGIN
Update @TAB SET F_ParentId =(SELECT F_Id FROM @TAB WHERE PerformanceConfigurationName=@NAME) WHERE F_ParentId=@ID
END
FETCH NEXT FROM MyCursor INTO @F_ParentId
END
CLOSE MyCursor
DEALLOCATE MyCursor
UPDATE @TAB SET JiFenSeriesId=@NEWJiFenSeriesId INSERT INTO JiFenPerformanceConfiguration SELECT * FROM @TAB 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. Python学习路程day20

    本节内容: 项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传 ...

  2. python自定义logger handler

    _filefmt=os.path.join("logs","%Y-%m-%d.log") class MyLoggerHandler(logging.Handl ...

  3. ubuntu 14.04安装搜狗输入法

    安装sougou for linux: 1.从官网http://pinyin.sogou.com/linux/?r=pinyin下载对应版本 2.由于版本原因需要卸载fcitx: sudo apt-g ...

  4. 【C】二级指针探秘 & 星号的两种用法(1.与基本类型结合形成另一种类型,比如与int结合形成int* 2.取值操作)

    1)问题:二级指针到底是什么?怎么用的?怎么存放的? #include <stdio.h> #define TEST_ADDR 0x12FF40 void main() { int a = ...

  5. php大力力 [052节] php数据库页面修改功能

    php大力力 [052节] php数据库页面修改功能

  6. grep 命令操作

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  7. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

  8. Android DownloadProvider学习

    DownloadProvider 简介 DownloadProvider 是Android提供的DownloadManager的增强版,亮点是支持断点下载,提供了“开始下载”,“暂停下载”,“重新下载 ...

  9. Java高级规范之二

    二十一.提交java代码前应该检查是否有没用的语句,如:System.out.println(); jsp页面上面是否有alert调试信息 不规范示例:暂无 规范实例:暂无 解析:因为如果保留了有可能 ...

  10. tinyXML的用法

    tinyXML一款很优秀的操作C++类库,文件不大,但方法很丰富,和apache的Dom4j可以披靡啊!习惯了使用java类库的我看到这么丰富的c++类库,很高兴!它使用很简单,只需要拷贝几个文件到你 ...