SQL資料庫中的XML應用

來源:互聯網
上載者:User

 下面我介紹一種通過XML技術在SQL SERVER2005中進行合併行轉列的 功能

DECLARE @idoc int
DECLARE @doc xml

SET @doc ='
<condition>

<State csif_cStateID="S001"/>
<State csif_cStateID="S002"/>
<State csif_cStateID="S003"/>

</condition>
'

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

SELECT    csif_cStateID 
FROM       OPENXML (@idoc, '/condition/State')
WITH (csif_cStateID  varchar(15))
EXEC sp_xml_removedocument @idoc

DECLARE @docHandle int
declare @xmlDocument nvarchar(max) -- or xml type
set @xmlDocument = N'

<Item>
    <SoNo>工程單號</SoNo>
    <ItemID>產品ID</ItemID>
    <EditionCD>版本CD</EditionCD>
    <ImprintCD>出版社CD</ImprintCD>
    <ProductName>產品名稱</ProductName>
    <EditionName>版本</EditionName>
    <ImprintName>出版社</ImprintName>
    <PackType>袋型</PackType>
    <ExFactory>最早走貨期</ExFactory>
    <OrderQty>訂單數量</OrderQty>
    <PlanProductQty>小排期排期數</PlanProductQty>
  </Item>

'
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument
-- Use OPENXML to provide rowset consisting of customer data.
--INSERT Customers
--SELECT *
--FROM OPENXML(@docHandle, N'ROOT/Customers/Orders')
--  WITH Customers
-- Use OPENXML to provide rowset consisting of order data.
--INSERT Orders
--SELECT *
--FROM OPENXML(@docHandle, N'//Orders')
--  WITH Orders
-- Using OPENXML in a SELECT statement.
SELECT *
FROM OPENXML(@docHandle, N'/Item',2)
WITH (SoNo nchar(20) , ItemID nvarchar(10),EditionCD nvarchar(10),ImprintCD nvarchar(10))
EXEC sp_xml_removedocument @docHandle
--EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
--
--SELECT    reqno 
--FROM       OPENXML (@idoc, '/root/CourierID',1)
--WITH (Reqno  varchar(15))

----合併行轉列
from (select distinct rcpi_cCartonContentID,rcpi_iCartonProductID from #tempOldRcpi ) a
Outer apply
( select stuff( replace( replace (
(select distinct isnull(so,'''') as so  from #tempOldRcpi b
where  b.rcpi_iCartonProductID=a.rcpi_iCartonProductID
 for xml auto),''<b so="'',''\''),''"/>'',''''),1,1,'''')
 as So

) as c'

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.