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

2 Cara Membuat Tabel Jika Belum Ada di Oracle

Oracle Database tidak menyertakan IF NOT EXISTS klausa dengan CREATE TABLE pernyataan, seperti yang dilakukan beberapa DBMS lainnya.

Oleh karena itu, jika kita tidak ingin membuat kesalahan karena nama tabel sudah digunakan, kita perlu menggunakan metode lain untuk memeriksa keberadaan tabel.

Opsi 1:Periksa DBA_TABLES Lihat

DBA_TABLES adalah tampilan kamus data yang menjelaskan semua tabel relasional dalam database. Kolomnya sama dengan yang ada di ALL_TABLES .

Kita bisa mengecek tabel ini untuk melihat apakah tabel sudah ada, kemudian jalankan saja CREATE TABLE pernyataan jika belum ada.

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:='
        CREATE TABLE T1 (
            c1 number(6,0),
            c2 varchar2(10)
        )';
        EXECUTE IMMEDIATE sql_stmt;
    END IF;
END;

Hasil:

PL/SQL procedure successfully completed.

Dalam hal ini, tabel dibuat karena tidak ada tabel yang memiliki nama t1 .

Sekarang, jika kita mencoba membuat tabel lagi, kita akan mendapatkan output yang sama dengan prosedur PL/SQL yang berhasil diselesaikan, dan tidak akan ada kesalahan.

Namun, jika kita hanya mencoba membuat tabel tanpa terlebih dahulu memeriksa keberadaannya, kita akan mendapatkan error:

CREATE TABLE T1 (
    c1 number(6,0),
    c2 varchar2(10)
);

Hasil:

Error report -
ORA-00955: name is already used by an existing object
00955. 00000 -  "name is already used by an existing object"

Opsi 2:Uji Kesalahan

Cara lain untuk melakukannya adalah dengan menjalankan CREATE TABLE pernyataan, dan kemudian menangkap kesalahan ORA-00955 yang terjadi. Secara khusus, kami menangkap kesalahan SQLCODE -955 yang terjadi.

Contoh:

DECLARE
sql_stmt long;

BEGIN
    sql_stmt:='
    CREATE TABLE T1 (
        c1 number(6,0),
        c2 varchar2(10)
    )';
    EXECUTE IMMEDIATE sql_stmt;

    EXCEPTION
        WHEN OTHERS THEN
            IF SQLCODE = -955 THEN
                NULL;
            ELSE
                RAISE;
            END IF;
END;

Hasil:

PL/SQL procedure successfully completed.

Saya menjalankannya meskipun T1 tabel sudah ada. Kesalahan ORA-00955 ditangkap dan ditangani sehingga kami tidak mendapatkan pesan kesalahan, dan tabel tidak dibuat.

Jika tabel belum ada, tabel akan dibuat, 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. Kelola Kata Sandi dan Sumber Daya di Oracle menggunakan Profil

  2. Jalankan Prosedur Tersimpan di Pengembang SQL?

  3. ketika memasukkan karakter persia di Oracle db saya melihat tanda tanya

  4. Fungsi Bernilai Tabel di ORACLE 11g? ( tampilan parameter )

  5. Contoh Kondisi Oracle IF