Функции не должны иметь параметров OUT; они возвращают это значение в любом случае. Итак:
create or replace function t_owner(tname in varchar2)
return varchar2
is
oname table.owner%type; --> declare a local variable which will be returned
begin
select owner into oname from table where table_name = tname;
return oname;
end;
Если вы хотите использовать параметр OUT
, переключитесь на процедуру:
create or replace procedure t_owner(tname in varchar2, oname out varchar2)
is
begin
select owner into oname from table where table_name = tname;
end;
Вы бы назвали это
declare
l_out table.owner%type;
begin
t_owner('table_test', l_out);
dbms_output.put_line(l_out);
end;