É muito comum as aplicações recuperarem dados de um banco de dados e transformar os dados recebidos em um arquivo .xml, para vários fins. Neste post, vou mostrar como pular a etapa de a aplicação converter o resultset em um xml, fazendo com que o próprio Oracle retorne o xml desejado.
Seja a tabela COUNTRIES do esquema HR com a seguinte estrutura:
– country_id (char(2) not null)
– country_name (varchar2(40))
– region_id (number)
e com os seguintes dados:
AR Argentina 2
AU Australia 3
BE Belgium 1
BR Brazil 2
CA Canada 2
CH Switzerland 1
CN China 3
DE Germany 1
DK Denmark 1
EG Egypt 4
FR France 1
HK HongKong 3
IL Israel 4
IN India 3
IT Italy 1
JP Japan 3
KW Kuwait 4
MX Mexico 2
NG Nigeria 4
NL Netherlands 1
SG Singapore 3
UK United Kingdom 1
US United States of America 2
ZM Zambia 4
ZW Zimbabwe 4
Vamos extrair um xml simples, que contem simplesmente o conteúdo desta tabela. Observe o comando SQL a seguir:
SELECT XMLElement("Countries", XMLAttributes(country_id as COD), XMLForest(country_name as NOME,region_id as REGIAO) ), extract('/*') as XML FROM HR.COUNTRIES; O resultado será: