Как я уже упоминал ранее в части комментариев, проблема связана с
- отсутствующим INTO предложением
- существующей опечаткой ( запятая ) после столбца фамилии в верхнем списке выбора.
В основном, процедуры используются для возврата одного столбца или одной строки, и в результате операторы SELECT могут быть возвращенывыводить параметры по предложению INTO .Но, если вы хотите вернуть список лиц (из нескольких строк), может подойти следующий стиль:
SQL> set serveroutput on;
SQL> create or replace procedure parlamentarieslist as
begin
for c in
(
select p.ssn, p.name, p.surname,
max(m.legislature) over (partition by p.ssn ) m
from parlimentaries p inner join mandate m
on ( p.ssn = m.parlamentaries )
order by m.legislature desc
)
loop
dbms_output.put_line(' SSN : '||c.ssn||' Name : '||c.name||' Surname : '||c.surname);
end loop;
end parlamentarieslist;
/
SQL> exec parlamentarieslist;
Где Использовать SQL с явным стилем ANSI JOIN вместо устаревшей запятой с разделениемJOIN стиль.