`
cd0281
  • 浏览: 122590 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

用xml字符作为参数(存储过程)

阅读更多
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go




ALTER PROCEDURE [dbo].[SP_RPT_AP_BILLING_SUMMARY]
@TMS_FREIGHT_IDS varchar(8000)				 ---FREIGHT_ID

WITH 
EXECUTE AS CALLER
AS

BEGIN

declare @idoc int

exec 	sp_xml_preparedocument @idoc output,@TMS_FREIGHT_IDS

SELECT TMS_FREIGHT_ID,FREIGHT_SOURCE
INTO #TMP_FRT
FROM TMS_FREIGHT 
WHERE TMS_FREIGHT_ID IN(
		select 	FRT_ID
		from openxml(@idoc,'/ROOT/FRT',2)
		with
		(
			FRT_ID		varchar(50) 'FRT_ID'
		)
)

exec sp_xml_removedocument @idoc


SELECT			
				F.TMS_FREIGHT_ID FRT_ID,
                 A.ATTEMPER_NO ATTEMPER_NO,
                 J.JOB_NO JOB_NO,
                 O.ORDER_NO ORDER_NO,
                 dbo.FN_GET_PERIOD (F.CREATED_DTM_LOC) FILE_PERIOD,
                 O.ORI_STATION ORI_STATION,
                 O.DEST_STATION DEST_STATION,
                 F.CREATED_OFFICE COST_INPUT_STATION,
                 F.BILLING_STATION PL_STATION,
                 F.CREATED_BY_USER CREATE_ID,
                 O.FINALLY_CARGO_PACKAGES QUANTITY,
                 O.FINALLY_CARGO_WEIGHT WEIGHT,
                 O.FINALLY_CARGO_CUBE CMB,
                 F.FRT_CODE ACE_CODE,
                 F.CURRENCY CUR,
                 F.EXCHANGE_RATE EXCHANGE_RATE,
                 F.UNIT_PRICE UNIT_PRICE
            FROM TMS_FREIGHT F
			LEFT JOIN TMS_ORDER O ON F.TMS_ORDER_ID = O.TMS_ORDER_ID
			LEFT JOIN TMS_ATTEMPER A ON F.TMS_ATTEMPER_ID = A.TMS_ATTEMPER_ID
			LEFT JOIN TMS_JOB J ON F.TMS_JOB_ID = J.TMS_JOB_ID
			WHERE RP_IND=1
			AND TMS_FREIGHT_ID IN(
				SELECT TMS_FREIGHT_ID
				FROM #TMP_FRT
				WHERE FREIGHT_SOURCE IN ('BK','JOB')
			) OR SHARE_FREIGHT_SOURCE_ID IN(
				SELECT TMS_FREIGHT_ID
				FROM #TMP_FRT
				WHERE FREIGHT_SOURCE NOT IN ('BK','JOB')
			)
			ORDER BY F.BILLING_STATION


END



传入的参数格式如下:
<ROOT>
  <FRT><FRT_ID>1231232</FRT_ID></FRT>
  <FRT><FRT_ID>1231233</FRT_ID></FRT>
  <FRT><FRT_ID>1231234</FRT_ID></FRT>
</ROOT>




xml操作测试


declare @xml varchar(1000)
set @xml = '<ArchiveMsg Title="jiangsuer" UserID="Admin1" Author="123" SendTime="1/1/2001" Department="mse" 
           AttachFile="hust"  ReceiveList="younther" Body="hustwelcome">
             <MsgKK>123123</MsgKK>
			 <MsgList UserID="Admin"/>
             <MsgList UserID="Anime"/>
             <MsgList UserID="Tiger"/>
          </ArchiveMsg> '

declare @idoc int

EXEC sp_xml_preparedocument @idoc output, @xml

SELECT Title,UserID,Author,SendTime,Department,ReceiveList,Body,AttachFile,MsgKK
FROM OpenXML(@idoc, '/ArchiveMsg')
WITH (
			Title		varchar(50),
			UserID		varchar(50),
			Author		varchar(50),
			SendTime	DATETIME,
			Department		varchar(50),
			ReceiveList		varchar(50),
			Body		varchar(50),
			AttachFile		varchar(50),
			MsgKK        varchar(50) 'MsgKK'
	  )

select MsgKK
from openxml(@idoc, '/ArchiveMsg')
with(
		MsgKK        varchar(50) 'MsgKK'
	)
SELECT '',UserID,''
FROM OpenXML(@idoc, '/ArchiveMsg/MsgList')
WITH  (
	MsgID   int,
	UserID  varchar(80),
	SendTime datetime
) 
EXEC sp_xml_removedocument @idoc


结果:



  • 大小: 30.3 KB
分享到:
评论

相关推荐

    java解析xml字符串

    方法接收一个XML字符串作为参数,然后按照上面的流程进行解析和操作。具体来说: - XML字符串首先被包装成`StringReader`和`InputSource`。 - `SAXBuilder`创建`Document`对象。 - 获取根元素`&lt;submittask&gt;`,并...

    JS读取XML字符串形成树

    总结起来,JavaScript处理XML字符串并形成树的过程包括XML解析、树形结构的构建以及可能的可视化。对于大数据量的XML,需要注意性能优化,确保代码高效且内存占用低。在实际项目中,结合合适的库和最佳实践,可以...

    XML可以做为参数传给【存储过程】也可以做为后台返回值传给前端的【JS】

    例如,当用户在datagridview中进行编辑并提交时,前端会将所有修改后的行转换为一个dataset,进一步转化为XML格式,然后将这个XML字符串作为参数传递给存储过程。存储过程接收到XML后,可以利用T-SQL的XML方法(如....

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

    使用oracle存储过程将xml文件数据导入数据库

    这个存储过程接受一个CLOB类型的XML字符串作为参数,通过EXTRACTVALUE函数提取数据,并用INSERT语句将数据插入到`customers`表中。 3. 执行存储过程:现在,你可以调用这个存储过程来导入XML数据。假设有一个名为`...

    SQL Server存储过程中使用表值作为输入参数示例

    在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入。 在2008中提供了表值参数。使用表值参数,可以不必创建临时表或许多参数...

    oracle xml 转换 存储过程

    4. **写入XML文件**:使用`UTL_FILE`包将格式化后的XML字符串写入指定目录下的文件中。 ```sql output_file := UTL_FILE.FOPEN('TEST_DIR', filename, 'w'); UTL_FILE.put(output_file, xmlstr); UTL_FILE....

    mfc 利用TinyXml 读取数据操作

    在本文中,我们将深入探讨如何在MFC(Microsoft Foundation Classes)框架下,使用TinyXml库来处理XML文件,实现数据的增加、修改和删除操作。TinyXml是一个小巧且易于使用的C++库,它允许程序员方便地解析和生成XML...

    在SQL存储过程中进行参数数组Array Parameter的处理函数

    可以将数组数据转换为XML字符串,然后在存储过程中解析和处理: ```sql CREATE PROCEDURE dbo.ProcessArray @XMLParam XML AS BEGIN INSERT INTO TargetTable SELECT t.v.value('local-name(.)', 'VARCHAR...

    将xml字符串转换为datatable

    - **加载XML字符串**:首先,使用`XmlDocument`类的`LoadXml`方法将XML字符串加载到一个`XmlDocument`对象中。 - **选择节点**:然后,使用`SelectNodes`方法选择XML文档中的特定节点。这里使用的是参数`tagName`...

    Android 对 strings.xml 的字符串进行格式化

    在Android开发过程中,为了实现应用的国际化或多语言支持,开发者通常会使用`strings.xml`文件来存储各种字符串资源。这些字符串资源不仅可以被直接引用显示在界面上,还可以通过格式化的方式动态填充变量值,从而...

    使用xstream实现对JavaBean与xml字符串的互转

    这篇博客将探讨如何使用XStream库实现JavaBean到XML字符串以及XML字符串回转到JavaBean的过程。 首先,让我们了解XStream的基本概念。XStream由Johannes Brodskiy创建,它是一个基于Java的库,提供了简单且高性能的...

    SQL存储过程与XML编程

    5. 动态XML:存储过程可以生成动态的XML字符串,这在需要根据运行时条件生成不同的XML结构时非常有用。 6. XML Schema验证:在存储过程中,可以使用XML Schema来验证输入或输出的XML数据,确保数据符合预定义的规范...

    XML结构参数详解

    通过以上介绍,我们可以看出XML作为一种强大的数据描述语言,在数据交换和存储方面具有广泛的应用价值。无论是对于Web开发还是企业内部系统集成,掌握XML的基本结构和DTD的定义方法都是非常重要的。

    让开源项目TinyXml支持Unicode(wchar_t)

    2. TinyXml函数提供的Xml内容解析功能,仅支持以ANSI编码和UTF8编码的Xml字符串,也即`多字节编码`。 3. TinyXml函数提供的Xml内容解析功能,不支持内容以UTF16编码和UTF32编码的Xml字符串,也即`Unicode编码`。 4...

    rsa加密串转C#的xml格式

    当你需要从XML字符串中恢复密钥时,可以使用`RSACryptoServiceProvider`的`FromXmlString()`方法。例如: ```csharp RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString...

    Android SAX 方式解析XML 字符串.docx

    本示例中,我们看到如何使用SAX解析XML字符串。 首先,我们来看主类`ParsingXML`。在这个类中,它继承自`Activity`,并包含一个用于显示结果的`TextView`。在`onCreate`方法中,首先创建了一个XML字符串`xml`,然后...

    java xml和map互转

    `xmlToMap`方法首先使用SAXReader解析XML字符串,然后递归地遍历XML文档的元素,将它们转换为Map结构。 `mapToXml`方法则将Map转换成XML字符串: ```java import org.dom4j.Document; import org.dom4j....

    Javascript格式化并高亮xml字符串的方法及注意事项

    在这里,`content`参数是待解析的XML字符串,通过`replace()`函数去除换行符,因为XML解析器通常不接受这些字符。`parseFromString()`方法将处理后的字符串转换为XML Document对象。 为了格式化和高亮XML,我们需要...

    SQL Server中读取XML文件的简单做法

    与`OPENROWSET`不同,`OPENXML`需要先使用`sp_xml_preparedocument`存储过程来准备XML文本。 `sp_xml_preparedocument`是处理XML文件的关键步骤,它接收三个参数:`@hdoc`是一个输出参数,用于存储内存中的XML数据...

Global site tag (gtag.js) - Google Analytics