Oracle
 sql >> база данни >  >> RDS >> Oracle

IF EXISTS условието не работи с PLSQL

IF EXISTS() е семантично неправилно. EXISTS условието може да се използва само вътре в SQL израз. Така че можете да пренапишете вашия pl/sql блок, както следва:

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;

Или можете просто да използвате count функцията определя броя на редовете, върнати от заявката, и rownum=1 предикат - трябва само да знаете дали съществува запис:

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DUPLICATE InMemory Объркване в Oracle RAC

  2. Как да регистрирам/проследя извиквания на съхранени процедури на Oracle със стойности на параметри?

  3. oracle 11g и интеграция на hibernate spring и jsf

  4. Ускорете операциите за групово вмъкване с NHibernate

  5. MOD() Функция в Oracle