我正在尝试使用Oracle的SQL Developer将XmlType变量中的数据插入表中。
我还是Oracle的新手。我正在尝试使用XML将XML数据从SQL Server数据库传递到Oracle。
我已经尝试了Stack Overflow和其他站点提供的许多解决方案,但似乎都无法正常工作。
以下内容基于我确实在Stack Overflow上找到的解决方案。我在Oracles SQL Developer上运行它:
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 Server做到了这一点,因此希望Oracle能够做到这一点,所以我必须缺少明显的东西!
答案 0 :(得分:1)
我认为正确的顺序是:
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
答案 1 :(得分:0)
非常感谢您的回复。我无法测试它,因为SQL Developer无法再次使用!它正在工作,我犯了关闭它的错误,现在它现在无法连接到Oracle XE!话虽如此,但我确实确实犯了一个简单的错误,并且我确信一旦我使SQL Developer再次正常工作,一切都会好起来的。 TVM!