-- 根據表中資料生成insert語句的儲存過程
alter proc proc_insert (@tablename varchar(256), @wherestr nvarchar(1000))
as -- 表名稱
begin
set nocount on
declare @sqlstr varchar(4000),
@sqlstr1 varchar(4000),
@sqlstr2 varchar(4000)
select @sqlstr='select ''insert into '+@tablename
select @sqlstr1= ' values ( ''+', @sqlstr2='('
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 =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
and columnproperty( a.id,a.name,'isidentity') <> 1)t order by colid
select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-4)+')'' from '+@tablename + ' ' + @wherestr
exec( @sqlstr)
set nocount off
endgo
-- 呼叫
--exec proc_insert '表名'
根據表中資料生成insert語句的儲存過程
有個缺點 就是標識種子的列 也insert了 create proc spgeninsertsql tablename varchar 256 asbegin declare sql varchar 8000 declare sqlvalues varchar 8000 set sql set sq...
將表中的資料生成INSERT語句
create procedure dbo outputdata tablename varchar 100 表名 asdeclare isidentity int declare columnname varchar 100 列名 declare typename varchar 100 資料型別 ...
SQLServer 匯出資料insert語句
set nocount on 表名和查詢條件 declare tablename varchar 64 c varchar 512 set tablename ba roleauthority set c where 1 1 定義欄位名,型別和長度的變數,以及獲取表結構的游標 declare nam...