牛人的程序:将数据库数据转换为XML文件

不知道是哪位牛人的程序,放在这里怕丢了。

SQL code

CREATE TABLE tb
(id int primary key,
 val numeric(10,2),
 date datetime,
 name varchar(100)
)

INSERT tb(id,val,date,name) SELECT 1,12,GETDATE(),'小梁'
     UNION ALL SELECT 12,29.334,'2010-09-12','兰儿';


SELECT CAST('<DATAPACKET Version="2.0"><METADATA>'+
    (SELECT A.name AS [@attrname],B.name AS [@fieldtype],
          CASE WHEN EXISTS(SELECT*
                           FROM sys.indexes AS C
                           JOIN sys.index_columns AS D ON C.object_id=D.object_id AND
                               C.index_id=D.index_id
                           WHERE C.object_id=A.object_id AND D.column_id=A.column_id
                            AND C.is_primary_key=1)
              THEN 'true'
              END
           AS [@IS_PRIMARY_KEY] ,   A.max_length AS [@WIDTH]    

FROM sys.columns AS A         
JOIN sys.types AS B     
ON A.user_type_id = B.user_type_id AND object_id=OBJECT_ID('tb')
FOR XML PATH('FIELD'),ROOT('FIELDS'))
+'</METADATA>'   
+(  SELECT * FROM tb
    FOR XML
    RAW('ROW'),ROOT('ROWDATA'))
+'</DATAPACKET>' AS xml);

DROP TABLE tb;





  
  
XML文件: /* <DATAPACKET Version="2.0"> <METADATA> <FIELDS> <FIELD attrname="id" fieldtype="int" IS_PRIMARY_KEY="true" WIDTH="4" /> <FIELD attrname="val" fieldtype="numeric" WIDTH="9" /> <FIELD attrname="date" fieldtype="datetime" WIDTH="8" /> <FIELD attrname="name" fieldtype="varchar" WIDTH="100" /> </FIELDS> </METADATA> <ROWDATA> <ROW id="1" val="12.00" date="2010-04-21T11:27:46.687" name="小梁" /> <ROW id="12" val="29.33" date="2010-09-12T00:00:00" name="兰儿" /> </ROWDATA> </DATAPACKET> */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值