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

Ошибка компиляции pl/sql кода

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


Вступление в Клуб: 27.04.2013
СообщениеПн Янв 27, 2014 17:10   Ошибка компиляции pl/sql кода Ответить с цитатой
Полезность: Нет оценки
Уважаемые форумчане, подскажите по следующей ситуации.

В операции объявлен макрос вида:
...
pragma macro ('xml','[XML_DB]');
...

В теле операции определен вызов:
...
&xml.replaceChild(...);
...

Результат компиляции (успешный) вызова на базе1:
plp$RESULT_1 := Z$RUNTIME_XML_DB.REPLACECHILD(...);

на базе2 (не успешный):
Z$RUNTIME_XML_DB.REPLACECHILD(...);

Ошибка компиляции на базе2:
PLS-00221: 'replacechild' не является процедурой или не определена.

Понятно, что при транслировании PL+ кода в PL/SQL в первом случае вызов "&xml.replaceChild(...);" интерпретируется как вызов функции, в другом случае как процедуры, которой конечно же нет в "Z$RUNTIME_XML_DB", но что на это влияет никак не можем определиться. Версии ТЯ на базах одинаковые, в чем может быть причина?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Янв 28, 2014 05:57   Re: Ошибка компиляции pl/sql кода Ответить с цитатой
Полезность: Нет оценки
sbk755 пишет:
Уважаемые форумчане, подскажите по следующей ситуации.
...


Насколько принципиально обращаться с функцией именно как с процедурой?
Может, если объявить переменную и сделать присваивание, это поможет? Smile
Ezhik
Участник со стажем


Вступление в Клуб: 17.04.2009
СообщениеВт Янв 28, 2014 07:16    Ответить с цитатой
Полезность: Нет оценки
А если покопать в сторону xml'евских пакетов на Оракле?
sbk755
Участник


Вступление в Клуб: 27.04.2013
СообщениеВт Янв 28, 2014 07:44    Ответить с цитатой
Полезность: Нет оценки
Понимаем, что явное присвоение скорее всего решило бы проблему.
Может существует еще какой-либо способповлиять на ситуацию? Не хотелось бы изменять (даже в таких мелочах) уже протестированную операцию.
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеВт Янв 28, 2014 09:35    Ответить с цитатой
Полезность: Нет оценки
Если я правильно помню, то там нужны синонимы на схеме IBS для dbms_xml<%name%> пакетов. Попробуейте покопать в эту сторону.

Upd: Заглянул в код XML_DB:
Код:

pragma Macro(check_synonym_ex,
'declare
   z integer;
begin
   select 1 into z from all_synonyms where owner = ''[1]'' and synonym_name = ''[2]'' and rownum = 1;
   [0] := ''pragma Define([3]);'';
exception
   when NO_DATA_FOUND then
      [0] := ''pragma Define([3], false);'';
end;'
   ,process, substitute);

--Использование XmlType, если существует синоним DBMS_XMLDOM
&check_synonym_ex(PUBLIC, DBMS_XMLDOM, XDB)

pragma IF_DEF(XDB);
...
pragma END_IF;
svn
Профи


Вступление в Клуб: 04.02.2008
СообщениеВт Янв 28, 2014 09:54    Ответить с цитатой
Полезность: Нет оценки
XML DB нужно устанавливать на схему

в документации прописано /OTHER/ШЛЮЗЫ/IBSO_ЦФТ-XML_DB
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

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