Отсутствует ключевое слово select при вставке данных Xml в таблицу - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь вставить данные из переменной XmlType в таблицу с помощью Oracle SQL Developer.

Я также очень новичок в Oracle.Я пытаюсь передать данные XML из базы данных SQL Server в Oracle, используя XML.

Я пробовал несколько решений из Stack Overflow и других сайтов, но, похоже, ничего не работает правильно.

Следующее основано на решении, которое я нашел на переполнении стека.Я запускаю это на Oracle 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

Если я включу Вставку в утверждение, я получу:

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 сможет это сделать, и поэтому я должен упустить что-то очевидное!

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Большое спасибо за ваш ответ.Я не смог проверить это, так как SQL Developer снова не работает!Он работал, и я сделал ошибку, закрыв его, и теперь он не будет подключаться к Oracle XE сейчас!Тем не менее, похоже, что я допустил простую ошибку, и я уверен, что как только я снова запустил SQL Developer, все будет хорошо.TVM!

0 голосов
/ 01 февраля 2019

Я думаю, что правильный порядок вещей:

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
...