Я создаю процедуру для отображения n номера максимальной и минимальной зарплаты для сотрудника.Если я введу 5 в качестве входных данных, запрос получит 5 максимальных и минимальных зарплат для сотрудника.
Для описанного выше сценария я создал объект с двумя столбцами, как показано ниже
create type vrec as object(
empno number,
sal number
);
/
Затем я создал вложенную таблицу с помощью типа объекта, чтобы я мог использовать вложенную таблицув качестве параметра out для возврата всех строк за одно короткое время.
create type vrec_type is table of vrec;
/
После создания типа данных я создаю процедуру, подобную приведенной ниже
create or replace procedure pro_first_last(input in number,salary out vrec_type)
is
begin
select empno,sal BULK COLLECT INTO salary from (
select empno,sal from
(select empno,sal,rank() over(order by sal asc) min_sal from emp5 where sal is not null) where min_sal <= 5
union all
select empno,sal from
(select empno,sal,rank() over(order by sal desc) max_sal from emp5 where sal is not null) where max_sal <= 5);
for i in salary.first..salary.last
loop
dbms_output.put_line(salary(i).empno);
end loop;
end;
/
Когда я компилирую вышеуказанную процедуру, яполучать недостаточно ценностей.Я также создал объект с двумя столбцами и в операторе выбора также я возвращаю только два столбца.Может ли кто-нибудь рассмотреть и помочь мне в этом или предложить какое-нибудь альтернативное решение.