CftClub.ru
Клуб специалистов ЦФТ-Банк

XMLTable, PL/PLUS как использовать?

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеПт Сен 21, 2012 02:56   XMLTable, PL/PLUS как использовать? Ответить с цитатой
Полезность: Нет оценки
Добрый день

есть переменная типа XMLType, содержащая xml документ

Код:
<xs:schema id="ValuteData"
                       xmlns=""
                       xmlns:xs="http://www.w3.org/2001/XMLSchema"
                       xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
                       xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
               <xs:element name="ValuteData" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:OnDate="20120919">
                  <xs:complexType>
                     <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="ValuteCursOnDate">
                           <xs:complexType>
                              <xs:sequence>
                                 <xs:element name="Vname" type="xs:string" minOccurs="0"/>
                                 <xs:element name="Vnom" type="xs:decimal" minOccurs="0"/>
                                 <xs:element name="Vcurs" type="xs:decimal" minOccurs="0"/>
                                 <xs:element name="Vcode" type="xs:int" minOccurs="0"/>
                                 <xs:element name="VchCode" type="xs:string" minOccurs="0"/>
                              </xs:sequence>
                           </xs:complexType>
                        </xs:element>
                     </xs:choice>
                  </xs:complexType>
               </xs:element>
            </xs:schema>


Надо извлечь значение атрибута msprop:OnDate используя XMLTable и сохранить в переменную
Как это написать на pl/plus?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Сен 21, 2012 08:15    Ответить с цитатой
Полезность: Нет оценки
Посмотрите тут

http://www.sql.ru/forum/actualpost.aspx?bid=3&tid=936183
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеПт Сен 21, 2012 08:29    Ответить с цитатой
Полезность: Нет оценки
как в pl/sql использовать вопросов нет, но не получается это написать при использование pl/plus. да и вставкой pl/sql тоже не получается
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Сен 21, 2012 09:01    Ответить с цитатой
Полезность: Нет оценки
кусок примера на пл+
Код:
PROCEDURE check_fault(p#xmlData IN clob)
IS
   fault_node      xmltype;
   fault_code      varchar2(256);
   fault_string   VARCHAR2(32767);
   fault_message   VARCHAR(32767);
   doc            XMLTYPE;
   pos            INTEGER :=1;
begin

   doc := xmltype.createxml(p#xmlData);
   doc := doc.extract('/soap:Envelope/soap:Body/child::node()','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
   fault_node := doc.extract('/soap:Fault', 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/');
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПт Сен 21, 2012 09:06    Ответить с цитатой
Полезность: Нет оценки
Тоже стоит задача - загрузить xml файлик. Я так понимаю задача стандартная (загрузить, разобрать во временный тейбл, присвоить переменным значения по именам тегов).
Есть ли у кого шаблончик? А то никогда не делал такого.
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеПт Сен 21, 2012 09:12    Ответить с цитатой
Полезность: Нет оценки
to vtar

У меня нет вопросов при использовании xmltype. Интересно встало как можно использовать xmltable
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Сен 21, 2012 09:19    Ответить с цитатой
Полезность: Нет оценки
e.kha пишет:
как в pl/sql использовать вопросов нет, но не получается это написать при использование pl/plus. да и вставкой pl/sql тоже не получается

Если не получается на пл+, сделайте свой пакет и вызывайте его процедуры из пл+.
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеПт Сен 21, 2012 09:46    Ответить с цитатой
Полезность: Нет оценки
В общем друзья... результат такой
как все начиналось...

http://www.sql.ru/forum/actualthread.aspx?bid=3&tid=970659&pg=-1

И встал вопрос, а как использовать xmltable в пл плюсе

что получилось

создаем xml_res1 типа XMLTable и инициализируем исходным документом
дальше объявляем переменную str varchar2(100)
и дальше оно самое:
Код:

           stdio.put_line_buf(xml_res1.getStringVal());
      stdio.put_line_buf(' ');
      
      -- begin pl/sql
         select xml_tab.OnDate
         into str
         from XMLTable(xmlnamespaces('http://www.w3.org/2001/XMLSchema' as "xmlns1",
                    'urn:schemas-microsoft-com:xml-msprop' as "msprop",
                    'urn:schemas-microsoft-com:xml-msdata' as "msdata"),
                        '/xmlns1:*/*[@msprop:OnDate]/@msprop:OnDate'
                        passing xml_res1
                        columns OnDate varchar2(100) path '.'
            ) xml_tab;
         
      -- end pl/sql
               
      stdio.put_line_buf(str);


результат выдает 20120919

Но переписать сие на pl plus не получилось, кто сможет закиньте в тему...

П.С. огромное спасибо xtender и одному очень скромному специалисту с ЦФТ-Москва....
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеПт Сен 21, 2012 09:58    Ответить с цитатой
Полезность: Нет оценки
сори, ошибся
xml_res1 типа XMLType
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеВт Сен 25, 2012 10:06    Ответить с цитатой
Полезность: Нет оценки
e.kha пишет:

Но переписать сие на pl plus не получилось, кто сможет закиньте в тему...


На PL+ не получится, т.к. он не поддерживает XMLTYPE
Если решать только средствами PL+, то можно XML_DB попробовать.
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеВт Сен 25, 2012 10:20    Ответить с цитатой
Полезность: Нет оценки
в каком смысле xmltype не поддерживается pl+? проблем в получение нодов xmltype не возникало кодом написанным на pl+.... в общем когда я писал что инициализировать переменную xml_res1 типа XMLType докой, это было сделано на pl+, вставкой я делал только селект с использованием xmltable
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru