PL / SQL: лучшая практика для выборки 2 или более объединенных таблиц из курсора?
Я слышал, что рекомендуется определять свои записи в PL / SQL с помощью атрибута% ROWTYPE. Это экономит ввод и позволяет вашему пакету продолжать работу даже при добавлении или удалении столбца. (Поправьте меня если я ошибаюсь!)
Однако, когда я извлекаю из курсора, который включает соединение, я обнаруживаю, что мне нужно выполнить выборку в определенную программистом запись, которая включает (вполне возможно, длинный) рукописный список всех столбцов, возвращаемых объединением.
Итак, мой вопрос: можно ли выполнять выборку во вложенных записях, или извлекать из списка записей, или делать что-то, чтобы избежать такой уродливой путаницы? Все, что я пробовал, приводит к ошибке о том, что запись не соответствует тому, что возвращает курсор.
Возврат результата соединения с использованием курсора кажется мне настолько распространенным вариантом использования, что странно, что в поиске ничего, связанного с этим, не обнаруживается.
Спасибо.
Ответов (2)2
Вы можете использовать курсор% 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;
/