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

Oracle DROP TABLE JIKA ADA Alternatif

Oracle Database tidak menyertakan IF EXISTS klausa yang ditawarkan beberapa DBMS lain di DROP TABLE pernyataan. Oleh karena itu, jika kita ingin menghindari kesalahan buruk yang diakibatkan dari mencoba menjatuhkan tabel yang tidak ada, kita perlu melakukan sedikit kerja ekstra.

Opsi 1:Periksa apakah Tabel Ada

Kita dapat memeriksa DBA_TABLES tampilan kamus data untuk melihat apakah tabel ada. Tampilan ini menjelaskan semua tabel relasional dalam database. Kolomnya sama dengan yang ada di ALL_TABLES .

Kita dapat memeriksa tabel ini untuk melihat apakah tabel tersebut ada, kemudian jalankan DROP TABLE pernyataan jika ya.

Contoh:

DECLARE
tbl_count number;
sql_stmt long;

BEGIN
    SELECT COUNT(*) INTO tbl_count 
    FROM dba_tables
    WHERE owner = 'HR'
    AND table_name = 'T1';

    IF(tbl_count <> 0)
        THEN
        sql_stmt:='DROP TABLE T1';
        EXECUTE IMMEDIATE sql_stmt;
    END IF;
END;

Hasil:

PL/SQL procedure successfully completed.

Dalam hal ini, tabel yang disebut t1 sudah ada dan dihapus.

Sekarang, jika kita menjalankan kode yang sama lagi, kita mendapatkan output yang sama:

PL/SQL procedure successfully completed.

Tidak ada kesalahan yang terjadi, meskipun tabel tidak ada lagi.

Namun, jika kita hanya mencoba untuk menjatuhkan tabel tanpa terlebih dahulu memeriksa keberadaannya, kita akan mendapatkan kesalahan:

DROP TABLE T1;

Hasil:

Error report -
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"

Opsi 2:Uji Kesalahan

Cara lain untuk melakukannya adalah dengan menjalankan DROP TABLE pernyataan, dan kemudian menangkap kesalahan ORA-00942 yang terjadi. Secara khusus, kami menangkap kesalahan SQLCODE -942 yang terjadi.

Contoh:

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE t1';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;

Hasil:

PL/SQL procedure successfully completed.

Saya menjalankannya meskipun T1 tabel tidak ada. Kesalahan ORA-00942 ditangkap dan ditangani sehingga kami tidak mendapatkan pesan kesalahan.

Jika tabel sudah ada, tabel akan dihapus, dan kita akan melihat output yang sama.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan angka nol di depan dalam kueri Oracle SQL?

  2. Bagaimana cara mengekspor data dengan Oracle SQL Developer?

  3. Mengurai tnsnames.ora dalam Visual C# 2008

  4. Oracle Menggabungkan beberapa kolom menjadi satu

  5. Oracle - Cara membuat pengguna hanya baca