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
151.数据存储为xml
最新推荐文章于 2024-07-12 16:26:51 发布