sql >> Databasteknik >  >> RDS >> Oracle

OM FINNS fungerar inte tillståndet med PLSQL

IF EXISTS() är semantiskt felaktigt. EXISTS condition kan endast användas i en SQL-sats. Så du kan skriva om ditt pl/sql-block enligt följande:

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;

Eller så kan du helt enkelt använda count funktionen bestämmer antalet rader som returneras av frågan, och rownum=1 predikat - du behöver bara veta om en post finns:

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. SEC_TO_TIME() Exempel – MySQL

  2. CAST och IsNumeric

  3. PHP-kod för att konvertera en MySQL-fråga till CSV

  4. Varför kan jag inte ange detta datum i en tabell med SQL?