В PL / SQL вы можете сделать это:
function user_exists (p_user_id users.user_id%type) return boolean
is
l_count integer;
begin
select count(*)
into l_count
from users
where user_id = p_user_id;
return (l_count > 0);
end;
Это затем будет использовано при вызове PL / SQL, например:
if user_exists('john') then
dbms_output.put_Line('John exists');
end if;
ПРИМЕЧАНИЕ. Я использовал count (*) в запросе, зная, что в случае поиска по первичному ключу он будет возвращать только 1 или 0. Если бы могло быть более одной строки, я бы добавил «и rownum = 1» к запросу, чтобы избежать ненужного подсчета большого количества записей, просто чтобы выяснить, существует ли такая запись:
function user_has_messages (p_user_id users.user_id%type) return boolean
is
l_count integer;
begin
select count(*)
into l_count
from messages
where user_id = p_user_id
AND ROWNUM = 1;
return (l_count > 0);
end;