来自 澳门威尼斯人注册网站 2019-12-12 06:27 的文章
当前位置: 澳门威尼斯人平台 > 澳门威尼斯人注册网站 > 正文

SQL FOR XML PATH

   FOEscort XML PATH ,其实它正是将查询结果集以XML情势表现,将多行的结果,展现在同生机勃勃行。

转载:

CREATE
 FUNCTION [dbo].[Getxxxxxxxxx]
    (
      @productCategoryId INT,
      @SplitChar varchar
    )
RETURNS NVARCHAR(MAX)
AS
    BEGIN

        DECLARE @returnProductCategory NVARCHAR(MAX)=N''

        /*-- 注意,CTE 表达式前面必须要用分号“;”把其代码分开,建议在WITH前面加分号“;” --*/
        ;WITH cte AS (
            SELECT
                ProductCategoryID
            FROM dbo.xxxx_xxxx parent(NOLOCK) WHERE ProductCategoryID=@productCategoryId

            UNION ALL

            SELECT
                child.ProductCategoryID
            FROM xxx_xxx child(NOLOCK) INNER JOIN cte ON child.ParentID=cte.ProductCategoryID
        )

        SELECT @returnProductCategory = (
            SELECT  (
                SELECT   
                    CAST(cte.ProductCategoryID AS NVARCHAR(10))+','
                FROM  cte FOR XML PATH('')
            ) AS temp 
        )

        RETURN @returnProductCategory
    END
GO

    上边我们来写叁个事例:

 FO瑞鹰 XML PATH 有的人或者清楚某个人可能不知晓,其实它正是将查询结果集以XML格局表现,有了它大家得以简化我们的查询语句完结部分在先只怕须求依附函数活存款和储蓄进度来完结的做事。那么以三个实例为主.

  

        即使大家有个干活流程表:

        生龙活虎.FO奇骏 XML PATH 简要介绍

    澳门威尼斯人注册网站 1澳门威尼斯人注册网站 2

             那么还是第一来介绍一下FOSportage XML PATH ,若是现在有一张兴趣爱好表(hobby)用来贮存在兴趣爱好,表结构如下:澳门威尼斯人注册网站 3

CREATE TABLE [dbo].[Workflow_Action](
    [WorkflowSchema] [nvarchar](128) NULL,
    [ActionSchema] [nvarchar](128) NULL,
    [ActionName] [nvarchar](64) NULL
)

INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('material-price','confirm','审核通过')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('material-price','reject','审核驳回')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('material-price','executing','执行价格')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('material-price','non-executing','不执行价格')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('oa-meeting-apply','confirm','审核通过')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('oa-meeting-apply','reject','审核驳回')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('oa-officialSeal-apply','confirm','审核通过')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('oa-officialSeal-apply','reject','审核驳回')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('oa-officialSeal-apply','returned','归还公章')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase','commit','提交审核')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase','reject','采购驳回')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase','confirm','审核通过')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase','order','采购下单')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase','recommit','重新提交审核')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase','part-consignment','部分收货')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase','consignment','完成收货')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase-request','commit','提交审核')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase-request','confirm','审核通过')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase-request','reject','申请驳回')
INSERT INTO [dbo].[Workflow_Action] ([WorkflowSchema],[ActionSchema],[ActionName]) VALUES ('purchase-request','recommit','重新提交审核')

       接下来大家来看使用FOSportage XML PATH的询问结果语句如下:

数据表和数目

SELECT * FROM @hobby FOR XML PATH

    澳门威尼斯人注册网站 4

       结果:

 

澳门威尼斯人注册网站 5

    生龙活虎、简介

<row>
  <hobbyID>1</hobbyID>
  <hName>爬山</hName>
</row>
<row>
  <hobbyID>2</hobbyID>
  <hName>游泳</hName>
</row>
<row>
  <hobbyID>3</hobbyID>
  <hName>美食</hName>
</row>

      接下去,大家用这些措施查询那些表的数码。

澳门威尼斯人注册网站 6

    select * from [dbo].[Workflow_Action] for xml path
      它可以将查询结果转换为一段XML格式的代码

      不问可以预知FO大切诺基 XML PATH 能够将查询结果依赖行输出成XML每一项!

    澳门威尼斯人注册网站 7

      那么,怎么着改变XML行节点的名号呢?代码如下:     

   --for xml path 后面可以写东西,for xml path(Schema),这样写的话,可以将节点<row>变成<Schema>
    select WorkflowSchema as WS,ActionSchema as SC,ActionName as AN from [dbo].[Workflow_Action] for xml path('Schema')

SELECT * FROM @hobby FOR XML PATH('MyHobby')

       澳门威尼斯人注册网站 8

 

    --我们还可以单独输出某一个字段的值
    SELECT '[ '+ActionName+' ]' FROM [dbo].[Workflow_Action] FOR XML PATH('')

      结果自然也总来讲之了呢?没有错原本的行节点<row> 产生了我们在PATH后边括号(卡塔尔国中,自定义的称号<MyHobby>,结果如下:

    澳门威尼斯人注册网站 9

澳门威尼斯人注册网站 10

 

<MyHobby>
澳门威尼斯人注册网站,  <hobbyID>1</hobbyID>
  <hName>爬山</hName>
</MyHobby>
<MyHobby>
  <hobbyID>2</hobbyID>
  <hName>游泳</hName>
</MyHobby>
<MyHobby>
  <hobbyID>3</hobbyID>
  <hName>美食</hName>
</MyHobby>

本文由澳门威尼斯人平台发布于澳门威尼斯人注册网站,转载请注明出处:SQL FOR XML PATH

关键词: