Ошибка компиляции pl/sql кода
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 пишет: | Уважаемые форумчане, подскажите по следующей ситуации.
...
|
Насколько принципиально обращаться с функцией именно как с процедурой?
Может, если объявить переменную и сделать присваивание, это поможет?  |
|
 |
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 |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|