DECLARE @XML XML
DECLARE @POINTER INT
SELECT @XML='
EXECUTE SP_XML_PREPAREDOCUMENT @POINTER OUTPUT, @XML
SELECT DESCRICAO FROM
OPENXML(@POINTER,'/ESTOQUE/ITEM',2)
WITH (DESCRICAO VARCHAR(100))
EXEC SP_XML_REMOVEDOCUMENT @Pointer
E agora um outro exemplo onde as tags apresentam atributos. Repare com atenção na diferente implementação do comando WITH:
DECLARE @XML XML
DECLARE @POINTER INT
SELECT @XML='
EXECUTE SP_XML_PREPAREDOCUMENT @POINTER OUTPUT, @XML
SELECT DESCRICAO, VALOR FROM
OPENXML(@POINTER,'/ESTOQUE/ITEM',2)
WITH (DESCRICAO VARCHAR(100) '@DESCRICAO',VALOR NUMERIC(10,2) '@VALOR')
EXEC SP_XML_REMOVEDOCUMENT @Pointer
Observe que os dois exemplos, utilizam a procedure SP_XML_PREPAREDOCUMENT que faz o parse do fragmento de XML passado como parâmetro utilizando o MSXML parser (Msxmlsql.dll) colocando o fragmento em um “estado” pronto para consumo. Como o MSXML parser joga esta alocação para memória, é necessário rodar a procedure sp_xml_removedocument para desalocar este ponteiro.
Até a próxima!
Nenhum comentário:
Postar um comentário
Leave your comment here!