Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

if (pilih count(kolom) dari tabel)> 0 maka

Anda tidak dapat langsung menggunakan pernyataan SQL dalam ekspresi PL/SQL:

SQL> begin
  2     if (select count(*) from dual) >= 1 then
  3        null;
  4     end if;
  5  end;
  6  /
        if (select count(*) from dual) >= 1 then
            *
ERROR at line 2:
ORA-06550: line 2, column 6:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
...
...

Anda harus menggunakan variabel sebagai gantinya:

SQL> set serveroutput on
SQL>
SQL> declare
  2     v_count number;
  3  begin
  4     select count(*) into v_count from dual;
  5
  6     if v_count >= 1 then
  7             dbms_output.put_line('Pass');
  8     end if;
  9  end;
 10  /
Pass

PL/SQL procedure successfully completed.

Tentu saja, Anda mungkin dapat melakukan semuanya dalam SQL:

update my_table
set x = y
where (select count(*) from other_table) >= 1;

Sulit untuk membuktikan bahwa ada sesuatu yang tidak mungkin. Selain kasus uji sederhana di atas, Anda dapat melihat diagram sintaks untuk IF penyataan; Anda tidak akan melihat SELECT pernyataan di salah satu cabang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa Itu Versi Utama?

  2. Menentukan apakah Field Data di Oracle bertipe Number

  3. Melewati array data sebagai parameter input ke prosedur Oracle

  4. ORA-00911:karakter tidak valid

  5. Apakah mungkin untuk mengeluarkan pernyataan SELECT dari blok PL/SQL?