Как проверить функцией в запросе наличие записи в таблице?
Какой должен быть запрос c функцией chek_user_id, чтобы проверить, есть ли такой iD таблице пользователей?
Если есть - вернуть true, а если нет - вернуть false.
Ответы (2 шт):
Автор решения: Alex R.
→ Ссылка
create or replace function check_user_id(in_id integer) return boolean is
v_count boolean;
begin
select
count(t.id) into v_count
from table_of_user t
where t.id = in_id;
return(v_count <> 0);
end;
Автор решения: 0xdb
→ Ссылка
Нельзя вернуть булево значение - true или false в запросе, так как в SQL этого типа данных нет.
Воспользуетесь другими доступными типами данных и константными значениями, которые могут послужить заменителями условных значений: 1/0, 'true'/'false', 'yes'/'no' и тп.
Главный критерий выбора - читаемость кода. Такой запрос поймут скорее всего все:
select id, name, checkIfUserExists (1) "userExists"
from users
where checkIfUserExists (1) = 'y';
ID NAME userExists
---------- ------ ----------
1 user 1 y
Попробуйте:
create table users as
select 1 id, 'user 1' name from dual
/
create or replace function checkIfUserExists (id number) return char is
begin
for r in (select 1 from users where id=checkIfUserExists.id) loop
return 'y';
end loop;
return 'n';
end;
/