En PL/SQL se puede hacer esto:
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;
Esto entonces se usa en la llamada PL/SQL de esta manera:
if user_exists('john') then
dbms_output.put_Line('John exists');
end if;
NOTA: he utilizado la cuenta (*) en la consulta con la certeza de que esto sólo devolverá 1 o 0 en el caso de una búsqueda de la clave principal. Si no puede haber más de una fila a continuación, me gustaría añadir "y rownum = 1" a la consulta para evitar innecesariamente contando muchos registros sólo para averiguar si es que existe:
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;
cadena de salida deseado "SÍ" o "NO" Y user_id es Numberic – Matt
Si desea devolver una cadena, a continuación, editar su pregunta de acuerdo a ese. Una cadena que dice "SÍ" o "NO" no es lo mismo que devolver verdadero o falso, que sería un booleano. – Pere