博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server复制表数据到另外一个表 的存储过程
阅读量:6910 次
发布时间:2019-06-27

本文共 2775 字,大约阅读时间需要 9 分钟。

if    exists (select * from sysobjects where id=object_id('GenerateData') and  OBJECTPROPERTY(id, 'IsProcedure') =1 )    Drop Procedure GenerateDatagoCREATE PROCEDURE GenerateData @tablename sysname AS begin    declare @column varchar(2000)     declare @columndata varchar(2000)     declare @sql varchar(8000)     declare @xtype tinyint     declare @name sysname     declare @objectId int     declare @objectname sysname     declare @ident int     set nocount on     set @objectId=object_id(@tablename)     if @objectId is null -- 判断对象是否存在     begin         print 'The object not exists'         return     end     set @objectname=rtrim(object_name(@objectId))     if @objectname is null or charindex(@objectname,@tablename)=0 --此判断不严密     begin         print 'object not in current database'         return     end     if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判断对象是否是table     begin         print 'The object is not table'         return     end     select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80     if @ident is not null     print 'SET IDENTITY_INSERT '+@TableName+' ON'     declare syscolumns_cursor cursor    for select c.name,c.xtype from syscolumns c     where c.id=@objectid order by c.colid     open syscolumns_cursor     set @column=''     set @columndata=''     fetch next from syscolumns_cursor into @name,@xtype     while @@fetch_status < >-1     begin         if @@fetch_status < >-2         begin             if @xtype not in(189,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理             begin                 set @column=@column+case when len(@column)=0 then'' else ','end+@name                 set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','','end                 +case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char                 when @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar                 when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime                 when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetime                 when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier                 else @name end             end         end         fetch next from syscolumns_cursor into @name,@xtype     end     close syscolumns_cursor     deallocate syscolumns_cursor     set @sql='set nocount on select ''insert into '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename     print '--'+@sql     exec(@sql)     if @ident is not null     print 'SET IDENTITY_INSERT '+@TableName+' OFF' endGO

EXEC GenerateData '同一数据库下的表名' 

转载于:https://www.cnblogs.com/RambleLife/p/9061554.html

你可能感兴趣的文章
【canvas】N角光阑
查看>>
R基本图形示例及代码(持续收集)
查看>>
SuperSocket 案例
查看>>
verilog语法实例学习(10)
查看>>
[LeetCode] Print All Combinations of a Number as a Sum of Candidate Numbers
查看>>
话说C# 6.0之后
查看>>
ios中创建自己的框架
查看>>
她和他的相遇
查看>>
各种Soft Shadow Mapping算法及推导过程
查看>>
五个免费的轻量级Linux发行版
查看>>
C# GDI+绘制矩形圆角
查看>>
C# DataTable常用操作总结 (转载)
查看>>
还原virtual函数的本质-----C++
查看>>
《GK101任意波发生器》升级固件发布(版本:1.0.2build306)
查看>>
hug and Compression Resistance
查看>>
sql server 2008分页
查看>>
lintcode:Pow(x, n)
查看>>
WebService中使用Aspose.Cells.dll
查看>>
Android菜鸟的成长笔记(28)——Google官方对Andoird 2.x提供的ActionBar支持
查看>>
【转载】装饰模式与代理模式的区别
查看>>