将数据库表中数据生成Insert SQL语气的存储过程

将数据库表中数据生成Insert SQL语气的存储过程

 1 None.gif set  ANSI_NULLS  ON
 2 None.gif set  QUOTED_IDENTIFIER  ON
 3 None.gif go
 4 None.gif
 5 None.gif
 6 None.gif Create   proc   [ dbo ] . [Get _insert_sql ]  
 7 None.gif(
 8 None.gif   @tablename   varchar ( 256 )
 9 None.gif , @where   varchar ( 8000 ) = null
10 None.gif , @orderby   varchar ( 8000 ) = null
11 None.gif )
12 None.gif as
13 None.gif begin
14 None.gif     set  nocount  on
15 None.gif     declare   @sqlstr   varchar ( 8000 )
16 None.gif     declare   @sqlstr1   varchar ( 8000 )
17 None.gif     declare   @sqlstr2   varchar ( 8000 )
18 None.gif
19 None.gif     SELECT   ' /*------------------table:  '   +   @tablename   +   ' --------*/ '
20 None.gif
21 None.gif     IF   OBJECTPROPERTY ( OBJECT_ID ( @tablename ),  ' TableHasIdentity ' =   1
22 None.gif     BEGIN
23 None.gif         SELECT   ' SET IDENTITY_INSERT  '   +   @tablename   +   '  ON  '
24 None.gif         SELECT   ' GO  '
25 None.gif     END
26 None.gif --     set @where=replace(@where,'''','''''')
27 None.gif
28 None.gif     select   @sqlstr = ' select  '' INSERT INTO  ' + @tablename
29 None.gif     select   @sqlstr1 = ''
30 None.gif     select   @sqlstr2 = '  ( '
31 None.gif     select   @sqlstr1 =   '  VALUES (  '' + '
32 None.gif     select   @sqlstr1 = @sqlstr1 + col + ' + '' , '' + '  , @sqlstr2 = @sqlstr2 + name  + ' , '   from  ( select   case  
33 None.gif --     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'
34 None.gif      when  a.xtype  = 104   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(1), ' + a.name  + ' ) ' + '  end '
35 None.gif     when  a.xtype  = 175   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''''''''' + ' + ' replace( ' + a.name + ' , '''''''' , '''''''''''' ) '   +   ' + ''''''''' + '  end '
36 None.gif     when  a.xtype  = 36   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''''''''' + ' + ' replace( ' + a.name + ' , '''''''' , '''''''''''' ) '   +   ' + ''''''''' + '  end '
37 None.gif     when  a.xtype  = 35   or  a.xtype  =   99   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''''''''' + ' + ' replace(convert(varchar(8000), ' + a.name + ' ), '''''''' , '''''''''''' ) '   +   ' + ''''''''' + '  end '
38 None.gif     when  a.xtype  = 61    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''''''''' + ' + ' convert(varchar(23), ' + a.name  + ' ,101) ' +   ' + ''''''''' + '  end '
39 None.gif     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 '
40 None.gif     when  a.xtype  = 62    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(23), ' + a.name  + ' ,2) ' + '  end '
41 None.gif     when  a.xtype  = 56    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(11), ' + a.name  + ' ) ' + '  end '
42 None.gif     when  a.xtype  = 60    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(22), ' + a.name  + ' ) ' + '  end '
43 None.gif     when  a.xtype  = 239   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''''''''' + ' + ' replace( ' + a.name + ' , '''''''' , '''''''''''' ) '   +   ' + ''''''''' + '  end '
44 None.gif     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 '
45 None.gif     when  a.xtype  = 231   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''' N '''''' + ' + ' replace( ' + a.name + ' , '''''''' , '''''''''''' ) '   +   ' + ''''''''' + '  end '
46 None.gif     when  a.xtype  = 59    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(23), ' + a.name  + ' ,2) ' + '  end '
47 None.gif     when  a.xtype  = 58    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''''''''' + ' + ' convert(varchar(23), ' + a.name  + ' ,101) ' +   ' + ''''''''' + '  end '
48 None.gif     when  a.xtype  = 52    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(12), ' + a.name  + ' ) ' + '  end '
49 None.gif     when  a.xtype  = 122   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(22), ' + a.name  + ' ) ' + '  end '
50 None.gif     when  a.xtype  = 48    then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(6), ' + a.name  + ' ) ' + '  end '
51 None.gif --     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'
52 None.gif      when  a.xtype  = 167   then   ' case when  ' + a.name + '  is null then  '' NULL ''  else  ' + ''''''''' + ' + ' replace( ' + a.name + ' , '''''''' , '''''''''''' ) '   +   ' + ''''''''' + '  end '
53 None.gif     else   ''' NULL '''
54 None.gif     end   as  col,a.colid,a.name
55 None.gif     from  syscolumns a  where  a.id  =   object_id ( @tablename and  a.xtype  <> 189   and  a.xtype  <> 34   and  a.xtype  <> 35
56 None.gif    )t  order   by  colid
57 None.gif    
58 None.gif     select   @sqlstr = @sqlstr +left ( @sqlstr2 , len ( @sqlstr2 ) - 1 ) + ' ' +left ( @sqlstr1 , len ( @sqlstr1 ) - 3 ) + ' ) '' + ''''  from  ' + @tablename
59 None.gif     if   @where   is   not   null
60 None.gif         select   @sqlstr = @sqlstr + '  where  ' + @where
61 None.gif     if   @orderby   is   not   null
62 None.gif         select   @sqlstr = @sqlstr + '  order by  ' + @orderby
63 None.gif        
64 None.gif  -- print @sqlstr
65 None.gif      exec @sqlstr )
66 None.gif  
67 None.gif     SELECT   ' GO  '
68 None.gif          
69 None.gif     IF   OBJECTPROPERTY ( OBJECT_ID ( @tablename ),  ' TableHasIdentity ' =   1
70 None.gif     BEGIN
71 None.gif         SELECT   ' SET IDENTITY_INSERT  '   +   @tablename   +   '  OFF  '
72 None.gif       SELECT   ' GO  '
73 None.gif       SELECT   '   '
74 None.gif     END     
75 None.gif
76 None.gif     set  nocount  off
77 None.gif end
78 None.gif
79 None.gif
80 None.gif

转载于:https://www.cnblogs.com/eric-huang/archive/2008/04/24/1169416.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值