Service Broker - jak wyodrębnić wiersze z komunikatu XML?
Powiedz, że mam następującą sytuację (do demonstracji). Prosta zawartość tabeli jest konwertowana na wartość XML i wysyłana za pośrednictwem Service Broker do innego serwera SQL, w którym wynikSELECT
ma być przechowywany w formie innej niż XML (tj. zwykłej, prostej tabeli bazy danych). Spróbujmy:
CREATE TABLE tab (a int, b int, c int);
GO
INSERT INTO tab (a, b, c) VALUES (1, 11, 111);
INSERT INTO tab (a, b, c) VALUES (2, 22, 222);
INSERT INTO tab (a, b, c) VALUES (3, 33, 333);
INSERT INTO tab (a, b, c) VALUES (4, 44, 444);
GO
SELECT * FROM tab FOR XML RAW, TYPE;
GO
Podczas przechwytywania wartości do wiadomości wygląda to tak:
<row a="1" b="11" c="111" />
<row a="2" b="22" c="222" />
<row a="3" b="33" c="333" />
<row a="4" b="44" c="444" />
tj. pojedynczy ciąg wielowierszowy. Powiedzmy, że tworzę dokładnie taką samą strukturę tabeli na komputerze docelowym:
CREATE TABLE tab_destination (a int, b int, c int);
Jaki jest najlepszy sposób na wyodrębnienie wierszy z@msg
i jak umieścić je w tabeli docelowej?
Dzięki, Petr