Service Broker - como extrair as linhas da mensagem XML?
Digamos que eu tenha a seguinte situação (para demonstração). O conteúdo da tabela simples é convertido em um valor XML e enviado via Service Broker para outro servidor SQL onde o resultado doSELECT
deve ser armazenado no formato não XML (ou seja, na tabela de banco de dados simples). Vamos tentar:
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
Ao capturar o valor para a mensagem, parece que:
<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" />
isto é, string multilinha simples. Diga, eu crio exatamente a mesma estrutura de tabela na máquina de destino:
CREATE TABLE tab_destination (a int, b int, c int);
Qual é a melhor maneira de extrair as linhas do@msg
e como colocá-los na tabela de destino?
Obrigado, petr