Комментарии показывают, что вы сделали неправильно (плюс один лишний begin-end
блок):
create or replace function nombre_completo
(p_id in hr.employees.employee_id%type)
return varchar2
is
nombre_completo varchar2(100); --> missing size
nombre varchar2(100); --> missing size
apellido varchar2(100); --> missing size
begin
select first_name, last_name --> wrong INTO clause
into nombre, apellido
from hr.employees
where employee_id = p_id;
nombre_completo := apellido;
return nombre_completo;
end;
Хотя при выборе значений вы не используете и объявляете лишние переменные, которые можно сократить до
create or replace function nombre_completo
(p_id in hr.employees.employee_id%type)
return hr.employees.apellido%type
is
nombre_completo hr.employees.apellido%type;
begin
select last_name
into nombre_completo
from hr.employees
where employee_id = p_id;
return nombre_completo;
exception
when no_data_found then
return null;
end;
У меня нет ваших таблиц, поэтому я не могу их проверить, но, вообще говоря, так оно и должно быть. Теперь могут быть другие проблемы (например, возможно, вы захотите обработать исключения, такие как no_data_found
), но это другая проблема.