Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Insert в поле типа xmltype / 18 сообщений из 18, страница 1 из 1
29.11.2018, 19:21
    #39740523
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Всем привет.

Использую функцию xmltype

Подскажите как при вставке проверять значение на NULL
т.к. при инсерте NULL-значения получаю ошибку ORA-19032: Expected XML tag , got no content

Код: plsql
1.
INSERT INTO Table (VALUEXML) VALUES  (xmltype('<?xml version="1.0"?> <greeting>Hello, world!</greeting>'))


так все вставляет корректно
...
Рейтинг: 0 / 0
29.11.2018, 19:22
    #39740524
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
поле VALUEXML имеет тип xmltype
...
Рейтинг: 0 / 0
29.11.2018, 19:25
    #39740526
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
и можно ли как-то NULL конвертировать в формат xmltype ?
...
Рейтинг: 0 / 0
29.11.2018, 19:32
    #39740528
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Предоставьте нормальный test case.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Connected to Oracle Database 12c Standard Edition Release 12.2.0.1.0 
Connected as user1@//DM/TEST

SQL> create table t1( x xmltype );

Table created

SQL> INSERT INTO t1 VALUES (xmltype('<?xml version="1.0"?> <greeting>Hello, world!</greeting>'));

1 row inserted

SQL> INSERT INTO t1 VALUES (null);

1 row inserted

SQL> commit;

Commit complete

SQL> select rowid, t1.x from t1;

ROWID                                                                            X
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
AAAST4AAHAAAAodAAA                                                               <?xml version="1.0"?>
                                                                                 <greeting>Hello, world!</greeting>
AAAST4AAHAAAAodAAB                                                               

SQL> 

...
Рейтинг: 0 / 0
29.11.2018, 19:41
    #39740533
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
dmdmdm, дело в том что скрипт гененирует стороннее приложение

Код: plsql
1.
INSERT INTO Table (Field1, Field2, VALUEXML) VALUES (@a, @b, xmltype(сюда_передается_значения_из_поля_типа_xmltype))



и когда туда поступает NULL в качестве аргумента. то получаю ошибку ORA-19032: Expected XML tag , got no content
...
Рейтинг: 0 / 0
29.11.2018, 19:45
    #39740534
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
чтобы если передается в функцию xmltype(NULL), то оно бы так и вставляло его NULLом, а если текст то обрабатывала и тоже вставляла
...
Рейтинг: 0 / 0
29.11.2018, 19:53
    #39740538
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Все еще нет test case.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Connected to Oracle Database 12c Standard Edition Release 12.2.0.1.0 
Connected as user1@//DM/TEST

SQL> create table t1( x xmltype );

Table created


SQL> INSERT INTO t1 VALUES (xmltype(NULL));

1 row inserted


SQL> 
...
Рейтинг: 0 / 0
29.11.2018, 19:58
    #39740540
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
INSERT INTO Table_1 (Field1, Field2, VALUEXML)
SELECT Field1, Field2, XMLTYPE(VALUEXML) FROM Table_2;
...
Рейтинг: 0 / 0
29.11.2018, 20:00
    #39740542
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Код: plsql
1.
2.
INSERT INTO Table_1 (Field1, Field2, VALUEXML) 
SELECT Field1, Field2, XMLTYPE(VALUEXML) FROM Table_2;



и вот тут селект дает как нормальные значения, которые функция конвертирует. А если попадает NULL то вылетает с ошибкой
...
Рейтинг: 0 / 0
29.11.2018, 20:05
    #39740547
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Код: plsql
1.
SQL> INSERT INTO t1 VALUES (xmltype(NULL));



а у меня если как у вас вставляю вместо аргумента NULL получаю

SQL Error: ORA-06553: PLS-307: слишком много описаний 'XMLTYPE' соответствуют этому вызову
06553. 00000 - "PLS-%s: %s"
...
Рейтинг: 0 / 0
29.11.2018, 20:33
    #39740554
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
ORA-06553: PLS-307

Наконец хоть что-то внятное.
И вы с этим сходили в Гугл и что-то почитали?
...
Рейтинг: 0 / 0
29.11.2018, 20:55
    #39740555
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Ольга СеменоваORA-19032: Expected XML tag , got no contentЭто приложение вместо биндов использует пустой литерал ''.
...
Рейтинг: 0 / 0
29.11.2018, 21:29
    #39740569
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
dmdmdmORA-06553: PLS-307

Наконец хоть что-то внятное.
И вы с этим сходили в Гугл и что-то почитали?

попробовала
Код: plsql
1.
INSERT INTO Table (VALUEXML) VALUES  (xmltype(TO_CHAR(NULL))



ORA-19032: Ожидался тэг XML ,; обнаружен no content
ORA-06512: на "SYS.XMLTYPE", line 310
...
Рейтинг: 0 / 0
30.11.2018, 00:51
    #39740625
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Ольга Семенова,

Bерсию огласи.

SY.
...
Рейтинг: 0 / 0
30.11.2018, 09:41
    #39740681
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Ольга Семенова,

мож у вас "пробельчик" передается, а не null?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> insert into stax_xml values(1,xmltype(trim(' ')))
  2  /
insert into stax_xml values(1,xmltype(trim(' ')))
                              *
ERROR at line 1:
ORA-19032: Expected XML tag , got no content
ORA-06512: at "SYS.XMLTYPE", line 310
ORA-06512: at line 1

SQL> insert into stax_xml values(1,xmltype(null));

1 row created.

SQL>


.....
stax
...
Рейтинг: 0 / 0
30.11.2018, 09:43
    #39740682
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Ольга Семенова,

0. Какая версия оракла
1. Каким типом биндуется параметр на стороне приложения
2. trim
...
Рейтинг: 0 / 0
30.11.2018, 10:01
    #39740686
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
C trim погорячился
...
Рейтинг: 0 / 0
30.11.2018, 14:13
    #39740886
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в поле типа xmltype
Ольга Семенова,

зацените:
Код: plsql
1.
2.
3.
4.
5.
with src as (select to_char(null) value from dual)
select xmltype(value) from src

with src as (select to_char(null) value from dual)
select case when value is not null then xmltype(value) end from src
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Insert в поле типа xmltype / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]