Oracle sql return true if exists question Oracle sql return true if exists question sql sql

Oracle sql return true if exists question


There is no Boolean type in Oracle SQL. You will need to return a 1 or 0, or some such and act accordingly:

SELECT CASE WHEN MAX(user_id) IS NULL THEN 'NO' ELSE 'YES' END User_exists  FROM user_id_table WHERE user_id = 'some_user';


In PL/SQL you can do this:

function user_exists (p_user_id users.user_id%type) return booleanis  l_count integer;begin  select count(*)  into   l_count  from   users  where  user_id = p_user_id;  return (l_count > 0);end;

This would then be used in calling PL/SQL like this:

if user_exists('john') then  dbms_output.put_Line('John exists');end if;

NOTE: I used count(*) in the query in the knowledge that this will only return 1 or 0 in the case of a primary key search. If there could be more than one row then I would add "and rownum = 1" to the query to prevent unnecessarily counting many records just to find out if any exists:

function user_has_messages (p_user_id users.user_id%type) return booleanis  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;


Oracle RDBMS does not have boolean data type, you can only use boolean variables in PL/SQL.

If you simply want to return strings 'TRUE' and 'FALSE'you can do this..

SELECT 'TRUE'  FROM DUAL WHERE EXISTS (SELECT 'x' FROM  table WHERE user_id = 'id')UNIONSELECT 'FALSE' FROM DUAL WHERE NOT EXISTS (SELECT 'x' FROM  table WHERE user_id = 'id')

I like @DCookie's query though.