sql >> Database >  >> RDS >> Oracle

INDIEN BESTAAT voorwaarde werkt niet met PLSQL

IF EXISTS() is semantisch onjuist. EXISTS voorwaarde kan alleen binnen een SQL-instructie worden gebruikt. U kunt uw pl/sql-blok dus als volgt herschrijven:

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;

Of je kunt gewoon count gebruiken functie bepalen het aantal rijen dat door de query wordt geretourneerd, en rownum=1 predikaat - u hoeft alleen te weten of een record bestaat:

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. Importeer MySQL-dump naar PostgreSQL-database

  2. PostgreSQL - stel een standaard celwaarde in volgens een andere celwaarde

  3. Verbinding maken met de lokale SQL Server-database met behulp van C#

  4. Kunt u Microsoft Entity Framework gebruiken met Oracle?