XML-Hilfe in TSQL

Wir erhalten einen vollständigen Block von XML mit verschiedenen Segmenten darauf.

Brauchen Sie Hilfe bei der Trennung von XML-Segmenten in separate XML-Chunks in lokale XML-variables.

Die lokale XML-Variable, die die getrennten XML-Segmente enthält, wird an einen anderen gespeicherten Prozedur weitergegeben.

Zum Beispiel:

Declare @Message xml set @Message = '<Message> <Procedure>sp_testProc</Procedure> <Customer> <row> <CustID>111</CustID> <CustName>TestName2</CustName> </row> <row> <CustID>222</CustID> <CustName>TestName2</CustName> </row> </Customer> <Product> <ProdCode>AA</ProdCode> <ProdName>TestProdAA</ProdName> </Product> </Message>' select @Message Declare @Proc xml Declare @Customer XML Declare @Product xml ----Need query help to extract as below, from @Message. set @Proc = '<Procedure>sp_testProc</Procedure>' set @Customer = '<Customer> <row> <CustID>111</CustID> <CustName>TestName2</CustName> </row> <row> <CustID>222</CustID> <CustName>TestName2</CustName> </row> </Customer>' set @Product = '<Product> <ProdCode>AA</ProdCode> <ProdName>TestProdAA</ProdName> </Product>' 

Dein Freund heißt .query()

Mit diesen Zeilen bekommst du die Portionen getrennt:

 Declare @Message xml set @Message = '<Message> <Procedure>sp_testProc</Procedure> <Customer> <row> <CustID>111</CustID> <CustName>TestName2</CustName> </row> <row> <CustID>222</CustID> <CustName>TestName2</CustName> </row> </Customer> <Product> <ProdCode>AA</ProdCode> <ProdName>TestProdAA</ProdName> </Product> </Message>'; SELECT @Message.query('/Message/Procedure') AS TheProc ,@Message.query('/Message/Customer') AS TheCust ,@Message.query('/Message/Product') AS TheProd 

AKTUALISIEREN

Und das ist der Code, um drei variables auf einmal zu füllen

  Declare @Proc xml Declare @Customer XML Declare @Product xml SELECT @Proc=@Message.query('/Message/Procedure') ,@Customer=@Message.query('/Message/Customer') ,@Product=@Message.query('/Message/Product'); SELECT @Proc; SELECT @Customer; SELECT @Product