PL / SQL не является интерактивным языком программирования. Это инструмент для материализации SQL и связанного кода, который вызывается из других клиентов. Это те клиенты, которые обрабатывают пользовательский ввод и другие вещи пользовательского интерфейса.
Так что идиоматическим способом написания вашей процедуры будет передача PERSON_ID в качестве параметра ....
create or replace procedure validate_terminate
(p_person_id in pa_expenditure_items_all.incurred_by_person_id%type )
is
l_yes out varchar2 (1);
null_found exception;
is
begin
select 'Y'
into l_yes
from dual
where exists
(select 'Y'
from pa_expenditure_items_all paei
,pa_expenditures_all pae
where paei.expenditure_id = pae.expenditure_id
and pae.incurred_by_person_id =p_person_id
and paei.cost_distributed_flag = 'N');
if l_yes is null
then
dbms_output_put_line ('Condition is not met');
raise null_found;
end if;
exception
when null_found then
dbms_output_put_line('CANNOT PROCESS TERMINATE');
end;
ТогдаВы вызываете процедуру следующим образом (при условии, что вы хотите использовать SQL * Plus, как подсказывает выбранный вами вариант записи):
exec validate_terminate(&person_id)
Примечание. Я предположил, что PERSON_ID является числовым;если это строка, вам нужно ее заключить в кавычки.