PL/SQL: Лучшая практика для извлечения 2 или более связанных таблиц из курсора?
Я слышал, что это хорошая практика для определения ваших записей в PL/SQL с помощью атрибута% ROWTYPE. Это позволяет сохранить типизацию и позволяет вашему пакету продолжать работать даже при добавлении или удалении столбца. (Исправьте меня, если я ошибаюсь!)
Однако, когда я извлекаю из курсора, который включает в себя соединение, я обнаружил, что мне нужно получить запись, определенную программистом, которая включает (вполне возможно длинный) список написанных вручную каждого столбца, возвращаемого соединением.
Итак, мой вопрос: Возможно ли входить в вложенные записи или забираться в список записей или делать что-то, чтобы избежать такого уродливого kludge? Все, что я пробовал, приводит к ошибке в записи, не соответствующей тому, что возвращается курсором.
Возвращение результата соединения с помощью курсора кажется для меня таким распространенным случаем, что странно, что ничего не связано с этим поиском.
Спасибо.
Вы можете использовать курсор пользователя% rowtype.
Пример:
declare
cursor c_c is
select emp.*, dept.* -- use aliasses if columns have same name
from emp
, dept; -- for sample no join condition
r_c c_c%rowtype;
begin
for r_c in c_c loop -- with for loop even the definition of r_c is not needed.
...
end loop;
end;
/
Почему даже беспокоиться с объявлением курсора?
Это эквивалентно.
begin
for r_c in (select emp.*, dept.* from emp, dept) loop
...
end loop;
end;
Я вижу в вашем комментарии вы упомянули об этом. Но я вижу, что явный синтаксис курсора используется так сильно, я думаю, что это важно показать.
Похожие вопросы
Посмотрите другие вопросы по меткам oracle plsql record cursor или Задайте вопрос