how many times can you spot the letter "-" in:
q: ошибка в процедуре: pls-00428: an into clause is expected in this select есть процедура, которая возвращает откртытый курсор. если i_id is null, то процедура должна возвращать все записи:
procedure getperson(i_id in number, i_startdate in date,i_enddate in date, rc out sys_refcursor) is--adminka
    begin
    if i_id is not null then
    open rc for
        select
            name,
            age
        from person s
       where  s.id = i_id;
       else
         select name, age from person;
      end if;
    end getperson;

но выдает такую ошибку:

error: pls-00428: an into clause is expected in this select

что не так, и как можно исправить?

a: в оператор открытия курсора open-for нельзя передать два запроса по условию в if-else. исправить можно так:
create or replace package body pack as
    procedure getperson (id number, rc out sys_refcursor) is
    begin
        open rc for 
            select * 
            from person s
            where s.id = coalesce (getperson.id, s.id);
    end getperson;
end;    
/

package body pack compiled

но так лучше не делать - это плохой дизайн. прочтя имя процедуры и передаваемые ей параметры: "верни мне персону к заданнаму id", никто не станет ожидать, что если id неопределенно (null), то процедура вместо пустого результата вернёт все записи.
поэтому, правильнее надо сделать так:
create or replace package pack as
    procedure getperson (id number, rc out sys_refcursor);
    procedure getallpersons (rc out sys_refcursor);
end;
/
create or replace package body pack as
    procedure getperson (id number, rc out sys_refcursor) is
    begin
        open rc for 
            select * 
            from person s
            where s.id = getperson.id;
    end getperson;
    procedure getallpersons (rc out sys_refcursor) is
    begin    
        open rc for select * from person;
    end getallpersons;
end;    
/

запустить тест и получить результат:
var rc refcursor
exec pack.getperson (1, :rc);

        id name                            
---------- --------------------------------
         1 aaa                             

exec pack.getallpersons (:rc);

        id name                            
---------- --------------------------------
         1 aaa                             
         2 bbb                             
         3 ccc                             


на db<>fiddle.

user
The text includes ninety-one "-"s in total.
assistant