繁体   English   中英

在 SQL 服务器的存储过程中解析 XML 和 output

Parse XML and output in stored procedure in SQL Server

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是 XML 架构:

<details schemaVersion="1">
  <dataWarning>
    <Locations>
      <Failed_to_Create LocationID="1234">Location<Location_Description>TEST</Location_Description><FacilityID>TEST</FacilityID><Active>Y</Active></Failed_to_Create>
    </Locations>
  </dataWarning>
</details>

如何解析 XML 以便能够在存储过程中显示它?

谢谢!

enter code here
2 个回复

使用 Xquery nodes() 方法。 它允许访问任何元素或属性。

SQL

DECLARE @xml XML = N'<Failed_to_Create LocationID="">Location
    <Location_Description>TEST</Location_Description>
    <FacilityID>TEST</FacilityID>
    <Active>Y</Active>
</Failed_to_Create>';

SELECT c.value('(./text())[1]', 'VARCHAR(10)') AS [location]
    , c.value('(Location_Description/text())[1]', 'VARCHAR(100)') AS [Location_Description]
    , c.value('(FacilityID/text())[1]', 'VARCHAR(100)') AS [FacilityID]
    , c.value('(Active/text())[1]', 'VARCHAR(100)') AS [Active]
FROM @xml.nodes('/Failed_to_Create') AS t(c);

Output

+------------+----------------------+------------+--------+
|  location  | Location_Description | FacilityID | Active |
+------------+----------------------+------------+--------+
| Location   | TEST                 | TEST       | Y      |
+------------+----------------------+------------+--------+

安德里亚,你需要更加自律。 您有责任提供 DDL 和样本数据群。

SQL

-- DDL and sample data population, start
DECLARE @tbl TABLE  (ID INT IDENTITY(1,1) PRIMARY KEY, Details XML);
INSERT INTO @tbl (Details)
VALUES
(N'<details schemaVersion="1">
  <dataWarning>
    <Locations>
      <Failed_to_Create LocationID="1234">Location<Location_Description>TEST</Location_Description><FacilityID>TEST</FacilityID><Active>Y</Active></Failed_to_Create>
    </Locations>
  </dataWarning>
</details>')
, (N'<details schemaVersion="1">
  <dataWarning>
    <Locations>
      <Failed_to_Create LocationID="5678">Location<Location_Description>Real Description</Location_Description><FacilityID>770</FacilityID><Active>N</Active></Failed_to_Create>
    </Locations>
  </dataWarning>
</details>');
-- DDL and sample data population, end

SELECT c.value('@LocationID', 'VARCHAR(10)') AS [locationID]
    , c.value('(Location_Description/text())[1]', 'VARCHAR(100)') AS [Location_Description]
    , c.value('(FacilityID/text())[1]', 'VARCHAR(100)') AS [FacilityID]
    , c.value('(Active/text())[1]', 'VARCHAR(100)') AS [Active]
FROM @tbl AS tbl
      CROSS APPLY tbl.Details.nodes('/details/dataWarning/Locations/Failed_to_Create') AS t(c);

Output

+------------+----------------------+------------+--------+
| locationID | Location_Description | FacilityID | Active |
+------------+----------------------+------------+--------+
|       1234 | TEST                 | TEST       | Y      |
|       5678 | Real Description     | 770        | N      |
+------------+----------------------+------------+--------+
1 在存储过程中解析XML

我有一个列表,其中具有列表类型属性(地址)。 我将整个信息以xml格式发送到数据库中,以将详细信息更新/插入到oracle表中。 这是xml格式 如何在oracle中解析整个xml? 我将其作为xmltype变量发送。 它给我一个编译错误 请帮助我解决此问题。 ...

2 存储过程中的XML解析

我有xml,如下所示 我的存储过程之一接受此xml作为输入,如下所示 在这里,我想将Id和RollNo保存在某个变量中,以便可以在存储过程中的进一步查询中使用它们。 我不知道从节点获取Id和RollNo并将其存储在变量中的确切语法。 有人可以建议我这样做吗? ...

4 SQL Server存储过程中的XML解析错误

我想在SQL Server存储过程中解析以下XML,并基于此XML更新一些表。 我已经使用OPENXML实现了相同的功能,但是现在XML的开头又增加了一行,因为这会出现意外错误。 解析时是否可能以某种方式单独跳过第一个标签 解析代码: XML在这里: ...

5 在SQL Server 2016存储过程中解析XML

我将以下xml存储在数据库中。 我将数据拉出到使用 我的问题是如何确定我的记录顺序相同? 标签并不总是相同的,但是发布顺序需要按XML中的原样显示。 当我插入记录时,它们似乎是随机排列的。 ...

6 在 SQL 服务器存储过程中解析 XML

我有 当 PubMed 只列出一个附属机构时,它曾经工作得很好 但是,它已将 Affiliation 更改为多个节点 我的问题是如何更改我的代码以连接所有附属机构并将其添加到我的插入中? ...

7 TSQL解析存储过程中的XML

我有4个表,其中包含各种数据。 表1包含问题表2包含组表3包含选项表4包含作业应用程序,其中包含“个人资料数据”列 概要文件数据已生成并转换为XML,并存储在表4的profileData列中。其格式如下: 现在,我正在创建一个页面,在该页面上需要使用所有选择的设置来重新创建作 ...

8 MYSQL存储过程中的XML解析

我有一个xml,其节点名称以名称空间开头。 这些名称空间不一致,可能会有所不同。 如何在不对命名空间进行硬编码的情况下提取mysql存储过程中节点的值。 Ex XML: &lt;ns1:token&gt; &lt;ns2:id&gt;12&lt;/ns2:id&gt; ...

2017-05-26 17:48:26 1 110   mysql/ xml
9 在Oracle存储过程中仅解析有效的xml

我做了一些搜索,但找不到与我尝试做的相似的情况。 我有以下代码,该代码首先构建一个游标,该游标填充有1)xml 2)id。 直到在第二个select语句中击中了错误的xml行之后,此方法才能正常工作,然后它中断了该过程且不再继续。 我需要找到一种方法来跳过第二个select语句中的 ...

10 在SQL存储过程中并置XML

我有从NIH下载的xml文件的这一部分 如果有多个,则需要合并从属节点。 在存储过程中,我传入了PMID,并且一直在使用 可以很好地拉第一个元素,但我想将每个作者的每个隶属关系合并在一行中 要不就 如果只有一个。 我努力了 但是我不确定我的引用 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM