zoukankan      html  css  js  c++  java
  • mssql sqlserver for xml EXPLICIT 用法详解说明


    摘要:
    下文通过举例的方式,详细说明"for xml EXPLICIT"关键字的用法,如下所示:
    实验环境:sql server 2008 R2



    EXPLICIT的功能:将数据表采用特定的形式返回xml数据。
     

    create table test
    (keyId int identity,
    sort nvarchar(10),
    info nvarchar(30)
    )
    insert into test(sort,info)
    values('衣服','A号'),
    ('衣服','B号'),('衣服','C号'),
    ('鞋子','D'),('鞋子','E'),
    ('鞋子','F')
    go
    
    ---使用explicit模式查询数据,必须指定特定的格式,sql脚本会根据特定模式生成相应的xml。
    ---使用explicit模式查询数据注意事项:
    /*
    返回第一列必须为:当前元素的行号,列名必须为"Tag",数据类型需为整型,
    数值为1代表第一层元素,数值为2代表第二层元素
    返回第二列为父级元素的编号,,列名必须为"Parent" ,Tag同Parent之间形成一个上下级的关系,
    parent中必须有元素为null或0,代表顶层元素。
    */
    -----例:
    
    SELECT 
    1 AS Tag,--Tag 列必须存在,1表示第一层节点 
    NULL AS Parent,--Parent 列必须存在, null代表第一级别 
    3 AS [node!1]
    --"node!1"表示根节点 此种形式代表的是根节点。
    --"node" 节点标签名称 元素名称
    --"1" 节点层次
    FOR XML EXPLICIT
    
    ---------------------------------------------------------
    /*
    [node!2!id!ELEMENT]
    node 代表的是节点名称;
    2代表的节点层次;
    keyId 表示的是元素名称;.
    ELEMENT 选项表示向 <node> 元素添加了
    <keyId>元素子级,而不是添加属性
    */
    
    SELECT 
    1 AS Tag,
    NULL AS Parent,
    8 AS [root!1],
    88 AS [node!2!id!ELEMENT]
    FOR XML EXPLICIT
    
    ---------------------
    SELECT 
    1 AS Tag,
    NULL AS Parent,
    8 AS [root!1],
    null AS [node!2!keyId!ELEMENT]
    UNION ALL
    SELECT 
    2 AS Tag,--表示第二层
    1 AS Parent,--指向父节点 tag=1
    NULL ,
    keyId
    FROM test ---WHERE keyId=1
    FOR XML EXPLICIT
    
     
    
    SELECT 
    1 AS Tag,
    NULL AS Parent,
    8 AS [root!1],
    null AS [node!2!keyId!ELEMENT],
    null AS [nodeExtend!3!sort!ELEMENT]
    UNION ALL
    SELECT 
    2 AS Tag,--表示第二层
    1 AS Parent,--指向父节点 tag=1
    NULL ,
    keyId,
    null
    FROM test WHERE keyId=1
    union all
    SELECT 
    3 AS Tag,--表示第二层
    2 AS Parent,--指向父节点 tag=1
    NULL ,
    keyId,
    sort
    FROM test WHERE keyId=2
    
    FOR XML EXPLICIT
    
    
    go
    truncate table test 
    drop table test 

    转自:http://www.maomao365.com/?p=7463

  • 相关阅读:
    1、向服务传送复杂的类型实例(服务端程序)(摘自ProAndroid2)
    我项目中用到的jquery+json+struts2
    JSON与JAVA的数据转换
    管理和组织首选项
    python中如何对dict对象进行排序
    python cx_Oracle模块的安装和使用(linux环境)
    python cx_Oracle模块的安装和使用(linux环境)
    django的一个小功能——SortedDict
    Linux中source命令的用法
    linux uname命令参数及用法详解linux查看系统信息命令
  • 原文地址:https://www.cnblogs.com/lairui1232000/p/9661756.html
Copyright © 2011-2022 走看看