这两个 create table 语句有什么区别?

Laz*_*zer 5 oracle xml oracle-11g-r2 sqlplus

一种)

SQL> CREATE TABLE xml_tab1(poDoc XMLTYPE);

Table created.

SQL> desc xml_tab1;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PODOC                                              PUBLIC.XMLTYPE
Run Code Online (Sandbox Code Playgroud)

b)

SQL> CREATE TABLE xml_tab2 of XMLType;

Table created.

SQL> desc xml_tab2;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TABLE of PUBLIC.XMLTYPE
Run Code Online (Sandbox Code Playgroud)

代码来自这里

在第一个中,我们创建了一个类型为 的列XMLTYPE。第二个是做什么的?我什么时候应该使用第一个或第二个?

Jus*_*ave 7

第二个语句是创建对象表。

您真正想要使用对象表的情况几乎从未发生过。当 Oracle 使数据库面向对象时,这是在 8i 时间框架中引入的。虽然很多面向对象的 PL/SQL 增强功能都很有用,但我并不推荐在 SQL 中使用对象类型。