IF EXISTS condition not working with PLSQL IF EXISTS condition not working with PLSQL sql sql

IF EXISTS condition not working with PLSQL


IF EXISTS() is semantically incorrect. EXISTS condition can be used only inside a SQL statement. So you might rewrite your pl/sql block as follows:

declare  l_exst number(1);begin  select case            when exists(select ce.s_regno                          from courseoffering co                         join co_enrolment ce                           on ce.co_id = co.co_id                        where ce.s_regno=403                           and ce.coe_completionstatus = 'C'                           and ce.c_id = 803                          and rownum = 1                        )           then 1           else 0         end  into l_exst  from dual;  if l_exst = 1   then    DBMS_OUTPUT.put_line('YES YOU CAN');  else    DBMS_OUTPUT.put_line('YOU CANNOT');   end if;end;

Or you can simply use count function do determine the number of rows returned by the query, and rownum=1 predicate - you only need to know if a record exists:

declare  l_exst number;begin   select count(*)      into l_exst     from courseoffering co          join co_enrolment ce            on ce.co_id = co.co_id    where ce.s_regno=403       and ce.coe_completionstatus = 'C'       and ce.c_id = 803      and rownum = 1;  if l_exst = 0  then    DBMS_OUTPUT.put_line('YOU CANNOT');  else    DBMS_OUTPUT.put_line('YES YOU CAN');  end if;end;


Unfortunately PL/SQL doesn't have IF EXISTS operator like SQL Server. But you can do something like this:

begin  for x in ( select count(*) cnt               from dual               where exists (                select 1 from courseoffering co                  join co_enrolment ce on ce.co_id = co.co_id                 where ce.s_regno = 403                    and ce.coe_completionstatus = 'C'                    and co.c_id = 803 ) )  loop        if ( x.cnt = 1 )         then           dbms_output.put_line('exists');        else            dbms_output.put_line('does not exist');        end if;  end loop;end;/