Запрос возвращает две (или более) строки;они не могут вписаться в скалярную переменную v_lname varchar2(30)
.
Вопрос: какого результата вы ожидаете?Только одно значение?Затем убедитесь, что запрос возвращает его;Предложение WHERE
может помочь (особенно если вы передаете параметр, но никогда не используете его), например,
select u.UTI_NAME ||' '|| u.UTI_L_NAME
into V_lNAME
from USER_TAB u
join DEAL_TAB d on u.USERNAME = d.USERNAME
where u.no_vac = p_no_vac; --> this
Обратите внимание, что я переименовал параметр;Я не знаю, содержит ли какая-либо из этих таблиц столбец no_vac
, но - если это так - вам лучше использовать другое имя для параметра.Одним из вариантов является добавление к нему префикса p_
.
В противном случае переписать функцию так, чтобы она возвращала что-то еще (пользовательский тип, таблица и т. Д.).