Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
declare tmp varchar2(300);
declare tmp2 varchar2(300);

XML=' <?xml version="1.0" encoding="windows-1251"?> <root><a>1</a><b>2</b></root>'


как за один селест получить значения 1 и 2 и присвоить их переменным tmp и tmp2?
Зранее благодарен!
9 ноя 06, 12:10    [3374538]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
ols@olsdb> set serveroutput on
ols@olsdb> edit
Wrote file afiedt.buf

  1  declare
  2  tmp varchar2(300);
  3  tmp2 varchar2(300);
  4  lxml xmltype := xmltype('<?xml version="1.0" encoding="windows-1251"?> <root><a>1</a><b>2</b></root>');
  5  begin
  6     select extract(lxml,'/root/a/text()').getstringval(),
  7             extract(lxml,'/root/b/text()').getstringval() into tmp, tmp2 from dual;
  8     dbms_output.put_line(tmp);
  9     dbms_output.put_line(tmp2);
 10* end;
ols@olsdb> /
1
2

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.00
ols@olsdb>

9 ноя 06, 12:24    [3374705]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
2Ales Protiv
mucho спсб!!
9 ноя 06, 13:08    [3375204]     Ответить | Цитировать Сообщить модератору
 Re: а как на счет вставки?  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
тоже интересно!!

XML=' <?xml version="1.0" encoding="windows-1251"?>
<root>
<row>
<a>1</a>
<b>2</b>
</row>
<row>
<a>3</a>
<b>4</b>
</row>
</root>'


одним запросом вставить в таблицу t(a,b)?
9 ноя 06, 13:30    [3375431]     Ответить | Цитировать Сообщить модератору
 Re: а как на счет вставки?  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
Dln
тоже интересно!!

Ничего интересного. Поиск по xmlsequence+table+extract
9 ноя 06, 13:42    [3375570]     Ответить | Цитировать Сообщить модератору
 Re: а как на счет вставки?  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
Полезно
9 ноя 06, 14:13    [3375972]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
и что-то мне подсказывает, что вы делаете лишнюю работу - почитайте еще про dbms_xmlsave.
9 ноя 06, 14:17    [3376012]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
нашел
http://www.oratechinfo.co.uk/sqlxml.html#updatexml
9 ноя 06, 14:52    [3376374]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
2 Ales Protiv
про dbms_xmlsave интересно конечно ...
https://www.sql.ru/forum/actualthread.aspx?tid=254099&hl=dbms_xmlsave

но что то уж много операций все таки, мне кажется, что
SQL> BEGIN
2 INSERT INTO x_test ( x, y, z )
3 SELECT EXTRACTVALUE(x.t_val, '/w/x') x_val,
4 EXTRACTVALUE(x.t_val, '/w/y') y_val,
5 EXTRACTVALUE(x.t_val, '/w/z') z_val
6 FROM
7 ( SELECT VALUE(t) t_val
8 FROM TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE('<v><w><x>T</x></w></v>'), '/v/w'))) t ) x;
9 END;
10 /
будет работать быстрее
чем dbms_xmlsave, как думаешь Ales Protiv? я то оракл 3 дня изучаю!
9 ноя 06, 14:59    [3376452]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
Dln
2 Ales Protiv
про dbms_xmlsave интересно конечно ...
https://www.sql.ru/forum/actualthread.aspx?tid=254099&hl=dbms_xmlsave

но что то уж много операций все таки, мне кажется, что ... будет работать быстрее
чем dbms_xmlsave, как думаешь Ales Protiv? я то оракл 3 дня изучаю!


Быстрее? - не факт, нужно смотреть конкретную ситуацию.
Я тут при помощи одного пакета, в котором 10 коротеньких процедур и используется dbms_xmlsave, выкинул наххх более 100 хранимых процедур, написаных до меня, делающих по сути одно и тоже и которые множились как тараканы. Причем с ростом приложения пакет остается неизменным. Так что решать вам, и конечно исходя из вашей конкретной ситуации. Прикиньте сколько подобных инсертов вам придется написать...

ЗЫ
если возметесь за dbms_xmlsave, сразу обращаю внимание, что он форматные маски для дат использует не plsql'евские, а явские.
9 ноя 06, 15:16    [3376625]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
procedure Client_List( XML varchar2, ErrDescr out varchar2 )
IS
begin
select * from v$client;
end Client_List;

при компиляции пишет
Compilation errors for PACKAGE BODY CL
Error: PLS-00428: an INTO clause is expected in this SELECT statement
Line: 146
Text: select * from client;

что не так?
9 ноя 06, 16:22    [3377214]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
Синтаксис неправильный, надо
select .... into .... from...
9 ноя 06, 16:50    [3377471]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
да ушш ... маловато будет напиши если не сложно пару строк ...


v$client - это вьюха!!
написал так
...
myrow v$client_org_user%ROWTYPE;
...
select * into myrow from v$client_org_user;

толку ноль!! ошибок нет но резултат - данные не выбирает! млин!
9 ноя 06, 17:05    [3377625]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ловец Стрекоз
Member

Откуда: Москва
Сообщений: 236
А как Вы поняли что
Dln
резултат - данные не выбирает! млин!
9 ноя 06, 17:12    [3377703]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
примерно так - что ни в каком окне (и вкладках ) Developer-a данных не видно!
9 ноя 06, 17:24    [3377852]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Mit
Member

Откуда: Мытищи
Сообщений: 819
может почитать хоть основы?
9 ноя 06, 17:53    [3378135]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/toc.htm
9 ноя 06, 17:58    [3378190]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
я и так читаю но не все сразу ..
сделал так

v_SQL := 'select * from v$client_user';

OPEN ref_cur
FOR v_SQL;
9 ноя 06, 18:09    [3378292]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
Dln
я и так читаю но не все сразу ..
сделал так

v_SQL := 'select * from v$client_user';

OPEN ref_cur
FOR v_SQL;


:) и что, сработало?
9 ноя 06, 18:17    [3378375]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Dln
Member [заблокирован]

Откуда:
Сообщений: 73
да, а как по другому сделать?
как вызвать select из procedure другим способом???
10 ноя 06, 09:15    [3379929]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ewg_
Member

Откуда: Moskow Region
Сообщений: 365
если уж тут пошел XML-флейм, :)
вопрос, плиз:
вижу (Ales Protiv )
lxml xmltype := xmltype('<?xml version="1.0" encoding="windows-1251"?> <root><a>1</a><b>2</b></root>');

а каким образом сделать обработку XML из файла ?
(в общих чертах)
10 ноя 06, 10:01    [3380187]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ewg_
Member

Откуда: Moskow Region
Сообщений: 365
Dln
я и так читаю но не все сразу ..
сделал так
v_SQL := 'select * from v$client_user';
OPEN ref_cur
FOR v_SQL;


ну Вы круты! я до реф-курсоров добрался через год работы с Ораклом
:) :) :)
в PL/SQL Developere есть вкладка Output, посмотрите что туда попадает после
begin
for c in (select * from dual)
loop
dbms_output.put_line(c.dummy);
end loop;
end;
10 ноя 06, 10:08    [3380237]     Ответить | Цитировать Сообщить модератору
 Re: про получение значений из XML  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
Ewg_
если уж тут пошел XML-флейм, :)
вопрос, плиз:
вижу (Ales Protiv )
lxml xmltype := xmltype('<?xml version="1.0" encoding="windows-1251"?> <root><a>1</a><b>2</b></root>');

а каким образом сделать обработку XML из файла ?
(в общих чертах)


1. передать файл в процедуру in clob параметром.
2. копнуть в сторону xmldb репозитория.
...

задачу подробней опишите, может еще что придумается...
10 ноя 06, 12:53    [3382017]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить