a)
SQL> CREATE TABLE xml_tab1(poDoc XMLTYPE);
Table created.
SQL> desc xml_tab1;
Name Null? Type
----------------------------------------- -------- ----------------------------
PODOC PUBLIC.XMLTYPE
b)
SQL> CREATE TABLE xml_tab2 of XMLType;
Table created.
SQL> desc xml_tab2;
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLE of PUBLIC.XMLTYPE
Código daqui .
Na primeira, estamos criando uma coluna do tipo XMLTYPE
. O que o segundo faz? Quando devo usar o primeiro ou o segundo?
A segunda instrução é criar uma tabela de objetos.
Quase nunca é o caso de você realmente querer usar uma tabela de objetos. Isso foi algo introduzido no período 8i, quando a Oracle estava tornando o banco de dados orientado a objetos. Embora muitos aprimoramentos PL/SQL orientados a objeto tenham sido úteis, usar tipos de objeto em SQL não é algo que eu recomendo.
...mas novamente... XML não tem nada a ver com SQL, então algum raciocínio normal pode não se aplicar...(em relação aos tipos de objetos, por exemplo).
O primeiro exemplo é um XMLType e, dependendo da versão do banco de dados, a definição de armazenamento subjacente pode ser Securefile CLOB ou Securefile Binary XML. O primeiro foi descontinuado do Oracle 12c em diante devido a motivos de desempenho não ideal.
O segundo exemplo (XMLtype Table) tem, se a sintaxe não for mais específica como acima, também Securefile CLOB ou Securefile Binary XML.
O exemplo de coluna XMLType é mais "SQL" nativo em seu uso (insira XML na coluna, selecione * da tabela onde xmlcolumn etc), onde a tabela XMLType é mais nativa de XML (insira XML na tabela XML, (X) consulta "doc" uso).
Tabelas XMLtype podem ser facilmente usadas com o Repositório XMLDB XDB ("hierarquia habilitada"), que pode ser usado com schredding XML automaticamente via, por exemplo, FTP, WebDaV ou consultado via acesso HTTP. Para essa extensão de comportamento, eles também são protegidos por meio de implementações de segurança XMLDB ACL.
As colunas XMLType podem ter as mesmas características de FTP/WebDAV/HTTP, mas a implementação dessa funcionalidade não é tão "pronta para uso" como no exemplo da tabela XMLType.
BTW Oracle funcionalidade orientada a objetos foi introduzida no Oracle 8.0.
Ambos os exemplos acima, em sua forma atual, resultarão em alternativas de arquivo seguro que não têm nada a ver com a funcionalidade Orientada a Objetos.
Dê uma olhada nas diferenças nos casos de uso de XMLType e mais na página principal do XMLDB
http://www.oracle.com/technetwork/database/database-technologies/xmldb/overview/index.html
Mais informações e instruções podem ser encontradas no fórum Oracle XMLDB e/ou em www.xmldb.nl (por exemplo http://www.liberidu.com/blog/2007/06/24/oracle-11g-xmltype-storage -options/ para ver algumas diferenças em relação às diferenças de sintaxe entre as opções de armazenamento XMLType)
HTH