Какова рекомендуемая практика написания процедур с повторно используемым кодом?

Я хочу проконсультироваться с некоторыми из наиболее опытных разработчиков Oracle о лучших методах разработки серверной части.

Я пишу множество пакетов, которые выводят данные в формате XML и используются службами HTTP.

Для этого я перебираю курсоры и печатаю данные с помощью htp.p.

e.g.

for i in c_my_cursor loop
  htp.p('<element>', i.data_field, '</element>');
end loop;

Теперь я слышал, что курсоры плохо влияют на производительность (правда ли это?). Более того, в разных пакетах используются похожие курсоры, которые, как мне кажется, с точки зрения обслуживания лучше было бы переключить на функции.

Но что я могу вернуть из функции? Я не думаю, что курсор будет работать. Чем вы пользуетесь?


person Zesty    schedule 28.07.2011    source источник
comment
Хороший вопрос. Я немного работал с XML в базе данных Oracle, но с каждым новым выпуском базы данных появляется новый способ работы. Поэтому мне также интересно услышать, что говорят эксперты.   -  person Rene    schedule 28.07.2011
comment
Какую версию базы данных вы используете? Кроме того, вы получите лучший ответ   -  person APC    schedule 28.07.2011
comment
@APC Я использую 10 г. Кстати, я еще не пометил это как ответ, так как я все еще пробую xmlagg(xmlelement(... stuff :) Итак, идея состоит в том, чтобы получить весь XML как скалярное значение, избегая необходимости зацикливания , я прав?   -  person Zesty    schedule 28.07.2011


Ответы (1)


Курсоры по своей сути не плохи. Что плохо, так это обработка строк за мучительными строками, а не использование обработки наборов. SQL — это все о радости наборов. Проблема с курсорами заключается в том, что разработчики PL/SQL часто обращаются к ним автоматически; это часто приводит нас к пути RBAR, когда прямой оператор SQL был бы более эффективным.

Функции не более эффективны, чем процедуры. Выбирайте функции или процедуры в зависимости от того, делаете ли вы что-то или что-то извлекаете.

В вашем случае я бы подумал, будут ли встроенные функции XML Oracle работать в вашем конкретном случае. Это частично зависит от того, какую версию Oracle вы используете, но почти любая версия, начиная с 8i, будет работать с конкретным примером, который вы опубликовали. Подробнее.

person APC    schedule 28.07.2011