将 Xml 数据插入 table 时缺少 select 关键字

Missing select keyword when inserting Xml data into table

我正在尝试使用 Oracle 的 SQL Developer 将 XmlType 变量中的数据插入 table。

我也是Oracle的新手。我正在尝试使用 XML.

将 XML 数据从 SQL 服务器数据库传递到 Oracle

我已经尝试了来自 Stack Overflow 和其他网站的一些解决方案,但似乎没有一个能正常工作。

以下是基于我在 Stack Overflow 上找到的解决方案。我在 Oracles 运行 上 SQL 开发者:

with sample_data as (select xmltype(
'<People>
   <Person>
       <ID>PP11</ID>
   </Person>
   <Person>
       <ID>PP22</ID>
    </Person>
</People>') xml_data from dual) 

--INSERT INTO Person (ID)
select x.ID
from   sample_data sd
   cross join xmltable('/People/Person'
                       passing sd.xml_data
                       columns ID varchar2(20) path 'ID') x;

注意 Insert Into 语句被注释掉了。

如果我在 SQL Developer 中 运行 按原样进行,我得到:

ID                  
--------------------
PP11
PP22

如果我包含 Insert into 语句,我得到:

Error starting at line : 2 in command -
with sample_data as (select xmltype(
'<People>
    <Person>
        <ID>PP11</ID>
    </Person>
    <Person>
       <ID>PP22</ID>
    </Person>
  </People>') xml_data from dual) 

INSERT INTO Person (ID)
select x.ID
from   sample_data sd
   cross join xmltable('/People/Person'
                       passing sd.xml_data
                       columns ID varchar2(20) path 'ID') x
Error at Command Line : 12 Column : 1
Error report -
SQL Error: ORA-00928: missing SELECT keyword
00928. 00000 -  "missing SELECT keyword"
*Cause:    
*Action:

谁能告诉我我做错了什么!我已经用 SQL 服务器完成了这个,所以希望 Oracle 能够做到这一点,所以我一定遗漏了一些明显的东西!

我认为正确的顺序是:

INSERT INTO Person (ID)
with sample_data as (select xmltype(
'<People>
    <Person>
        <ID>PP11</ID>
    </Person>
    <Person>
       <ID>PP22</ID>
    </Person>
  </People>') xml_data from dual) 
select x.ID
from   sample_data sd
   cross join xmltable('/People/Person'
                       passing sd.xml_data
                       columns ID varchar2(20) path 'ID') x

非常感谢您的回复。我无法对其进行测试,因为 SQL 开发人员不再工作了!它正在运行,但我错误地关闭了它,现在它无法连接到 Oracle XE!也就是说,看起来我确实犯了一个简单的错误,我相信一旦 SQL 开发人员再次工作,一切都会好起来的。 TVM!