sql >> Databáze >  >> RDS >> Oracle

IF EXISTS podmínka nefunguje s PLSQL

IF EXISTS() je sémanticky nesprávný. EXISTS podmínku lze použít pouze uvnitř příkazu SQL. Takže můžete přepsat svůj pl/sql blok následovně:

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;

Nebo můžete jednoduše použít count funkce určí počet řádků vrácených dotazem a rownum=1 predikát - potřebujete pouze vědět, zda záznam existuje:

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. Začínáme s Oracle SQL Developer v systému Windows

  2. Jak ukládat opakující se data s ohledem na letní čas

  3. Kde podmínka pro spojenou tabulku v Sequelize ORM

  4. Obnovte kořenové heslo MySQL ve Windows