sql >> データベース >  >> RDS >> Oracle

PLSQLでEXISTS条件が機能しない場合

    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. Lumen-実行時にデータベース接続を作成します

    2. カンマ区切りの値をOracleの行に変換するにはどうすればよいですか?

    3. DynamicsCRMのマルチステートメントTVF

    4. @@ IDENTITYを使用して、SQLServerで最後に挿入されたID値を返します