151.数据存储为xml

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_savexml]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_savexml]
GO

/*--将表中的数据存储为xml文档
/*--调用示例

	exec p_savexml 'sysobjects'
--*/
go
create proc p_savexml
@tbname sysname
as
declare @s nvarchar(4000)
select @s='',@tbname=quotename(@tbname)
select @s=@s+N'
'+quotename(name,'<>')
	+N'''+rtrim(cast('+quotename(name)+' as varchar(8000)))+'''
	+quotename('/'+name,'<>')
from syscolumns 
where id=object_id(@tbname)
order by colid
print @s
exec(N'
select id=identity(int,1,1),value='''+@s+'''
into ##t from '+@tbname)
set @s=@@rowcount
set identity_insert ##t on
insert ##t(id,value)
--select -3,N'' union all
select -2,N'' union all
select -1,N'' union all
select  0,N''+@s+'' union all
select @s+1,N'' union all
select @s+2,N''
set @s='bcp "select case when id between 1 and '
	+@s
	+' then N''''+value+N'''' else value end from ##t order by id'
	+'" queryout "c:\a.xml" /T /c'
select * from ##t
exec master..xp_cmdshell @s
drop table ##t
go
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值