?Create?? Proc?? proc_insert?? (@tablename?? varchar(256))????
??? as?????????????????????????????????????????????? --?? 表名稱??
? begin????
????? set?? nocount?? on??
????????? Declare?? @sqlstr???? varchar(4000),??
????????????????????????? @sqlstr1?? varchar(4000),??
????????????????????????? @sqlstr2?? varchar(4000)??
???
??????????? Select?? @sqlstr='select?? ''Insert?? '+@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??
???
??????????????? )t?? order?? by?? colid??
?????
??????????????? select?? @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+')?? '+left(@sqlstr1,len(@sqlstr1)-3)+')''?? from?? '+@tablename??
?????
??????????????? exec(?? @sqlstr)??
???
??????????????? set?? nocount?? off??
???
? end??
???
?
GO