生成表insert into语句的存储过程
来源:互联网 发布:淘宝宝贝失效还能买吗 编辑:程序博客网 时间:2024/06/06 03:49
CREATE PROC [dbo].[proc_insert] ( @tablename VARCHAR(256) , @where NVARCHAR(MAX) = '' )AS BEGIN SET nocount ON DECLARE @sqlstr VARCHAR(4000) DECLARE @sqlstr1 VARCHAR(4000) DECLARE @sqlstr2 VARCHAR(4000) SELECT @sqlstr = 'select ''insert ' + @tablename SELECT @sqlstr1 = '' SELECT @sqlstr2 = ' (' SELECT @sqlstr1 = ' values ( ''+' SELECT @sqlstr1 = @sqlstr1 + col + '+'',''+' , @sqlstr2 = @sqlstr2 + name + ',' FROM ( SELECT CASE -- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end' WHEN a.xtype = 127 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(20),' + a.name + ')' + ' end' WHEN a.xtype = 104 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(1),' + a.name + ')' + ' end' WHEN a.xtype = 175 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.name + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN a.xtype = 61 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + '''''''''+' + 'convert(varchar(23),' + a.name + ',121)' + '+''''''''' + ' end' WHEN a.xtype = 106 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(' + CONVERT(VARCHAR(4), a.xprec + 2) + '),' + a.name + ')' + ' end' WHEN a.xtype = 62 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(23),' + a.name + ',2)' + ' end' WHEN a.xtype = 56 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(11),' + a.name + ')' + ' end' WHEN a.xtype = 60 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(22),' + a.name + ')' + ' end' WHEN a.xtype = 239 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.name + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN a.xtype = 108 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(' + CONVERT(VARCHAR(4), a.xprec + 2) + '),' + a.name + ')' + ' end' WHEN a.xtype = 231 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.name + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN a.xtype = 59 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(23),' + a.name + ',2)' + ' end' WHEN a.xtype = 58 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + '''''''''+' + 'convert(varchar(23),' + a.name + ',121)' + '+''''''''' + ' end' WHEN a.xtype = 52 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(12),' + a.name + ')' + ' end' WHEN a.xtype = 122 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(22),' + a.name + ')' + ' end' WHEN a.xtype = 48 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + 'convert(varchar(6),' + a.name + ')' + ' end'-- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end' WHEN a.xtype = 167 THEN 'case when ' + a.name + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.name + ','''''''','''''''''''')' + '+''''''''' + ' end' ELSE '''NULL''' END AS col , a.colid , a.name FROM syscolumns a WHERE a.id = OBJECT_ID(@tablename) AND a.xtype <> 189 AND a.xtype <> 34 AND a.xtype <> 35 AND a.xtype <> 36 ) t ORDER BY colid SELECT @sqlstr = @sqlstr + LEFT(@sqlstr2, LEN(@sqlstr2) - 1) + ') ' + LEFT(@sqlstr1, LEN(@sqlstr1) - 3) + ')'' from ' + @tablename IF @where <> '' SET @sqlstr += ' where ' + @where-- print @sqlstr EXEC( @sqlstr) SET nocount OFF END
0 0
- 生成表insert into语句的存储过程
- 生成insert语句的存储过程
- 根据表中数据生成insert语句的存储过程
- 根据表中数据生成insert语句的存储过程
- 根据表中数据生成insert语句的存储过程
- 根据表中数据生成insert语句的存储过程
- 将表中的初始化数据转化成insert into语句的存储过程
- POSTGRESQL 存储过程 select into 和 insert into select 两种表复制语句之间的差别
- 自动生成Insert Into 的SQL语句
- 自动生成INSERT语句的SQL存储过程
- oracle用存储过程导出INSERT INTO 语句
- SQLSERVER表数据生成INSERT语句(通用存储过程)
- 生成Insert语句SQL存储过程
- SQL Server 存储过程生成insert语句
- (转)根据表中数据生成insert语句的存储过程
- (转)根据表中数据生成insert语句的存储过程(另一种方法)
- 存储过程insert into select
- 表的复制语句: select into 和 insert into select
- JAVA基础之初始化与清理
- 算法竞赛入门经典:第八章 高效算法设计 8.3归并排序应用之逆序对数
- WINSERVER2008 IIS7 配置ASP 老程序
- POJ 2531 Network Saboteur(DFS)
- UVa 10268 - 498-bis
- 生成表insert into语句的存储过程
- TProfiler
- hdu5380 贪心+双端队列
- android中保存一个ArrayList到SharedPreferences的方法
- 算法竞赛入门经典:第八章 高效算法设计 8.4快速排序应用之第k小的数
- zigbee最大功率设置及协调器PA
- java基础知识回顾——集合
- 一种高效无锁内存队列的实现
- POJ 2155 Matrix