Тогда только «реальная» таблица, включенная в ваш код, является
hr.thong_tin_thue_phong
Поскольку вы предшествовали ее имени именем владельца (hr
), я думаю, что вы в настоящее время не подключены как hr
, Если это так, hr
должен предоставить вам привилегию select
, чтобы этот запрос работал.
Итак: подключитесь как hr
и запустите
grant select on thong_tin_thue_phong to user_that_runs_that_pl/sql_block;
По поводу другой полученной ошибки: при вызове dbms_output.put_line
внутри l oop вы ссылаетесь ds.soluong
, но - его нет в запросе FOR
l oop: у него есть thang
и sokhach
, поэтому - используйте их.
Также, если вы создала процедуру с параметром IN
, вы не запрашиваете ее , используя переменную подстановки. Процедура будет такой:
create or replace procedure thangmax3(par_nam IN number)
as
begin
dbms_output.put_line('DS 3 thang nhieu khach den o ksan nhat nam '|| par_nam);
for ds in (select d.thang,
d.sokhach
from (select extract (month from thoigiannhan) as thang,
COUNT(mathuephong) sokhach
from HR.thong_tin_thue_phong
where extract (year from thoigiantra) = par_nam
group by extract (month from thoigiannhan)
order by COUNT(mathuephong) DESC
) d
where rownum<=3
)
loop
dbms_output.put_line('Thang: '||ds.thang||' '||'So khach: '||ds.sokhach);
end loop;
end;
Вы бы назвали это
begin
thangmax3(&nam);
end;
/