导出表数据的存储过程

创建一个导出表数据的存储过程

CREATE   PROC [DBO].[SPGENINSERTSQL] (@TABLENAME VARCHAR(256))
AS
BEGIN
DECLARE @SQL VARCHAR(8000)
DECLARE @SQLVALUES VARCHAR(8000)
SET @SQL =' ('
SET @SQLVALUES = 'VALUES (''+'
SELECT @SQLVALUES = @SQLVALUES + COLS + ' + '','' + ' ,@SQL = @SQL + '[' + NAME + '],'
  FROM
      (SELECT CASE
                WHEN XTYPE IN (48,52,56,59,60,62,104,106,108,122,127)       

                     THEN 'CASE WHEN '+ NAME +' IS NULL THEN ''NULL'' ELSE ' + 'CAST('+ NAME + ' AS VARCHAR)'+' END'

                WHEN XTYPE IN (58,61)

                     THEN 'CASE WHEN '+ NAME +' IS NULL THEN ''NULL'' ELSE '+''''''''' + ' + 'CAST('+ NAME +' AS VARCHAR)'+ '+'''''''''+' END'

               WHEN XTYPE IN (167)

                     THEN 'CASE WHEN '+ NAME +' IS NULL THEN ''NULL'' ELSE '+''''''''' + ' + 'REPLACE('+ NAME+','''''''','''''''''''')' + '+'''''''''+' END'

                WHEN XTYPE IN (231)

                     THEN 'CASE WHEN '+ NAME +' IS NULL THEN ''NULL'' ELSE '+'''N'''''' + ' + 'REPLACE('+ NAME+','''''''','''''''''''')' + '+'''''''''+' END'

                WHEN XTYPE IN (175)

                     THEN 'CASE WHEN '+ NAME +' IS NULL THEN ''NULL'' ELSE '+''''''''' + ' + 'CAST(REPLACE('+ NAME+','''''''','''''''''''') AS CHAR(' + CAST(LENGTH AS VARCHAR)  + '))+'''''''''+' END'

                WHEN XTYPE IN (239)

                     THEN 'CASE WHEN '+ NAME +' IS NULL THEN ''NULL'' ELSE '+'''N'''''' + ' + 'CAST(REPLACE('+ NAME+','''''''','''''''''''') AS CHAR(' + CAST(LENGTH AS VARCHAR)  + '))+'''''''''+' END'

                ELSE '''NULL'''

              END AS COLS,NAME

         FROM SYSCOLUMNS 

        WHERE ID = OBJECT_ID(@TABLENAME)

      ) T
SET @SQL ='SELECT ''INSERT INTO ['+ @TABLENAME + ']' + LEFT(@SQL,LEN(@SQL)-1)+') ' + LEFT(@SQLVALUES,LEN(@SQLVALUES)-4) + ')'' FROM '+@TABLENAME
PRINT @SQL
EXEC (@SQL)
END

 

转载于:https://www.cnblogs.com/liwenyan/archive/2012/06/08/2541758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值