вставка в двоичный XML из BLOB-объектов - PullRequest
0 голосов
/ 10 апреля 2019

пытается вставить данные из таблицы, содержащей столбец blob, в таблицу, содержащую двоичный столбец xml

исходная таблица

desc "T24"."FBNK_ACCOUNT_CLOSED"; 
Name Null? Type 
----------------------------------------- -------- ---------------------- 
------ 
RECID NOT NULL VARCHAR2(255) 
XMLRECORD BLOB 

Таблица назначения

SQL> desc "T24"."FBNK_ACCOUNT_CLOSED_TEMP"; 
Name Null? Type 
----------------------------------------- -------- ---------------------- 
------ 
RECID NOT NULL VARCHAR2(255) 
XMLRECORD XMLTYPE STORAGE BINARY

, поэтому яя пытаюсь вставить данные, как показано ниже, но их ошибка

SQL> insert into "T24"."FBNK_ACCOUNT_CLOSED_TEMP" select RECID,XMLRECORD 
from "T24"."FBNK_ACCOUNT_CLOSED" where rownum<10; 

insert into "T24"."FBNK_ACCOUNT_CLOSED_TEMP" select RECID,XMLRECORD from 
"T24"."FBNK_ACCOUNT_CLOSED" where rownum<10 
* 
ERROR at line 1: 
ORA-00932: inconsistent datatypes: expected - got BLOB

Документ, на который я подписан, является документом оракула (ID документа 1405457.1)

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=309572821111227&parent=SrDetailText&sourceId=3-19827644581&id=1405457.1&_afrWindowMode=0&_adf.ctrl-state=1qwexs4zw_510

ниже приведеныстроки из документов оракула

"Используйте синтаксис insert select для перемещения данных из BLOB-объекта scott.tb в таблицу XMLType scott.po_bin, хранящуюся в виде двоичного XML

SQL> insert into po_bin select xmltype(bc, 873) from scott.tb;

1 row created.

SQL> select * from po_bin;

SYS_NC_ROWINFO$
---------------------------------------------------------------------------- 
----
<?xml version="1.0" encoding="US-ASCII"?>
<PurchaseOrder>
  <Reference>ADAMS-20011127121040988PST</Reference>
  <Actions>
    <Action>
      <User>SCOTT</User>
      <Date>2002-03-31</Date>
    </Action>
  </Actions>
  <Reject/>
...
...

"

попытался отредактировать код с несколькими изменениями, которые все еще не выполнялись с другим номером ошибки

insert into "T24"."FBNK_ACCOUNT_CLOSED_TEMP" select recid, 
xmltype(xmlrecord, 873) from "T24"."FBNK_ACCOUNT_CLOSED" where rownum<1000 
* 
ERROR at line 1: 
ORA-31011: XML parsing failed 
ORA-19202: Error occurred in XML processing 
LPX-00210: expected '<' instead of '2' 
Error at line 1 
ORA-06512: at "SYS.XMLTYPE", line 283 
ORA-06512: at line 1 

1 Ответ

0 голосов
/ 10 апреля 2019

Причиной этого сбоя является таблица, содержащая недопустимые данные XML. поэтому при вставке данных в двоичный XML-столбец проверка не выполняется для некоторых строк. так что это не может быть сделано на этом столе. но мои шаги правильны согласно оракулу.

...