Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Warunek IF EXISTS nie działa z PLSQL

IF EXISTS() jest semantycznie niepoprawna. EXISTS warunek może być użyty tylko wewnątrz instrukcji SQL. Możesz więc przepisać swój blok pl/sql w następujący sposób:

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;

Możesz też po prostu użyć count funkcja do określa liczbę wierszy zwracanych przez zapytanie, a rownum=1 predykat - musisz tylko wiedzieć, czy rekord istnieje:

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. Jak wybrać wszystkie kolumny z tabeli oraz dodatkowe kolumny, takie jak ROWNUM?

  2. KLUCZ OBCY PRZY USUWANIU BŁĘDU OGRANICZENIA — Oracle

  3. SQL — Znajdź instrukcję, która wstawia określone wartości

  4. Ile indeksów bazy danych to za dużo?

  5. Oracle getConnection wolno