Sql 解析XML 解决方案参考

1、定义存储过程

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[UpdateHDWRSUMSStatus]
-- Add the parameters for the stored procedure here
--<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
--<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
@xml xml
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
-- SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>

DECLARE @xmlHandle int
EXEC sp_xml_preparedocument @xmlHandle OUTPUT, @xml

Update hdwrsums
Set updatedate = getdate(),
articleid = modified.articleid
from (
SELECT *
FROM OPENXML (@xmlHandle, ‘/Root/Record‘,1)
WITH (PROTSENO varchar(34),
LOANSQNO varchar(3),
articleid int) ) as modified
Where hdwrsums.PROTSENO = modified.PROTSENO and hdwrsums.LOANSQNO = modified.LOANSQNO

EXEC sp_xml_removedocument @xmlHandle

RETURN

END

2、.NET调用存储过程

public static void ToUpdateHDWRSUMSStatus(string xmlstr)
{
using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.AppSettings["DBConnectionString"].ToString()))
{
connection.Open();
System.Data.SqlClient.SqlTransaction trans = connection.BeginTransaction();
System.Data.SqlClient.SqlCommand testcmd = new System.Data.SqlClient.SqlCommand();
testcmd.Connection = connection;
testcmd.Transaction = trans;
try
{
testcmd.CommandType = CommandType.StoredProcedure;
testcmd.CommandText = "UpdateHDWRSUMSStatus";
testcmd.Parameters.Add("@xml", SqlDbType.VarChar, -1).Value = xmlstr;
testcmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception exception)
{
trans.Rollback();
throw exception;
}
finally
{
connection.Close();
}
}
}

3、xml格式如下

<Root>
<Record PROTSENO="PROTSENO" LOANSQNO="LOANSQNO" articleid="articleid">
</Record>>
</Root>

时间: 2024-11-14 20:15:47

Sql 解析XML 解决方案参考的相关文章

SQL解析XML

-------------------------------成功------------------------------------------------------------ with pivot_info as( select * from ( select t.workcode, to_char(count(1)) DPAPC,failmodeldic.dic_name failmodelname from tdm_testpart t,pub_dictionary failmo

python 解析XML文件

比较高效的python 解析XML文件 参考 http://codingpy.com/article/parsing-xml-using-python/ try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET import time def parse_poi_by_elementTree(filepath): t0 = time.time() tree = E

sql for xml 拼接相同类的列数据

数据库中记录着员工的工作经历,一个经历一条数据,现有一个需求要Excel导出员工的工作经历,所以就得把工作经历拼接在一起 测试的数据表如下 需要处理得到的结果如下(多个经历用了逗号隔开): SQL语句: SELECT empID, LEFT(workExperience,LEN(workExperience)-1) AS workExperience FROM ( SELECT empID,(SELECT Experience++',' FROM dbo.Employee WHERE empID

SQL 存储过程 解析XML

第一种说明: 我看过这样一篇文章,如下 在SQL   Server2005中,微软延续了   2000中一个特性(即支持XML类型的数据),并加强了对XML   数据列.XML变量以及XML索引的支持. 在数据库中存储XML数据是一个很出色的特征.对于大部分的数据处理需求来讲,将XML数据格式化为其它关联数据是十分重要.这也是引入OPENXML函 数的原因.OPENXML是一个SQL   Server提供的函数,它的作用是接收XML数据,提供内存中   XML数据的行集视图. 一个OPENXML

基于oracle SQL Developer Data Modeler建模工具,解析xml,生成etljet代码

今天准备在 @zhangkai05 写的小工具model_sql基础上,进一步完善功能,使其更加自动化.方便建模人员开发etl任务. 源代码更改后 ,会发布到 git(url地址)上,逐步完善. 描述现状及问题 团队 数据仓库建模在2013年下开始使用 oracle sql developser datamodeler建模工具,之前一直用 powerdesigner,但由于后者是商业收费软件,公司又不打算购买.故经过调研,转向oracle建模工具.虽然其 易用性与 power designer

Oracle使用Sql把XML解析成表(Table)的方法

SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0" encoding="gb2312" ?> <DEAL_BASIC> <USER_DEAL_INFO> <USER_DEAL_ID>1000100001</USER_DEAL_ID> <DEAL_INURE_TIME>

SQL 里解析 XML 格式 字段 信息

DECLARE @ItemMessage XML DECLARE @ItemTable TABLE(No NVARCHAR(300),zje NVARCHAR(300),yfje NVARCHAR(300),bcje NVARCHAR(300),URL NVARCHAR(300),Remark NVARCHAR(300)) SET @ItemMessage=N'<List> <item> <No>SM-JG-201303-0189</No> <zje&

java DOM解析xml文件出现#text节点解决方案

java DOM解析xml文件出现#text节点解决方案 原生java解析xml的方法提供了两个,DocumentBuilder 和 SAXParser. 试了第一个DOM方法,在解析输出节点过程中,getNodeName()输出节点名发现多出了几个#text节点. text.xml <?xml version="1.0" encoding="UTF-8"?> <!-- xml解析测试文件 --> <LData> <ldat

浅谈用java解析xml文档(四)

继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使用dom4j解析,个人认为是四种解析方式里面最方便的一种,DOM4J是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用D