Как заселяется search
?Кроме того, какая у вас версия SQL * Plus?
В SQL * Plus вы можете объявить переменную и заполнить ее в PL / SQL, например так (я использовал демонстрационную схему HR):
define search='VJONES';
var user_id number
begin
select employee_id into :user_id from employees where email = '&search';
exception
when no_data_found then
raise_application_error(-20001, 'No user found with email ''&search''.');
when too_many_rows then
raise_application_error(-20002, 'Multiple users found with email ''&search''.');
end;
/
select phone_number from employees where employee_id = :user_id;
PHONE_NUMBER
--------------------
650.501.4876
(Вам не нужен строго обработчик исключений, но это улучшит обработку недействительных или дублированных данных.)
Вы также можете придерживаться define
переменных:
column user_id new_value user_id
select employee_id as user_id from employees where email = '&search';
USER_ID
----------
195
1 row selected.
Теперь вы определили и заполнили &user_id
и можете использовать его в запросах:
select phone_number from employees where employee_id = &user_id;
PHONE_NUMBER
--------------------
650.501.4876
Я не понимаю части вашего вопроса о вещах, которые не работают или используют общие команды.Если бы вы могли уточнить их, я мог бы добавить к своему ответу.