Какова рекомендуемая практика для написания процедур с повторным использованием кода? - PullRequest
4 голосов
/ 28 июля 2011

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

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

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

Например,

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

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

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

1 Ответ

10 голосов
/ 28 июля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...