Tiga Alternatif Multiple Insert pada Oracle

Misalkan kita memiliki sebuah tabel Mata_Kuliah di Oracle dengan struktur seperti berikut:

desc mk

Bagi yang sudah terbiasa dengan MySQL, jika ingin meng-insert beberapa baris data sekaligus pada MySQL maka dapat dengan mudah menggunakan tanda koma sebagai pemisah antar record seperti contoh berikut ini:

insert into Mata_Kuliah values
('MI1133', 'Perancangan Basis Data', 3),
('MI3322', 'Migrasi Data', 2),
('TK1064', 'Basis Data', 3);

Sayangnya untuk melakukan multiple insert (menginsert beberapa baris data sekaligus) di Oracle kita tidak bisa menggunakan tanda koma seperti contoh MySQL di atas. Kalaupun kita mencoba melakukannya di Oracle maka kita akan mendapatkan peran error “command not properly ended” seperti yang ditampilkan pada gambar berikut:

command not properly ended

Sebetulnya ada beberapa alternatif cara untuk meng-insert beberapa barus data di Oracle, yaitu sebagai berikut:

  1. Menggunakan Table DUAL dan Klausa UNION
    Sebetulnya kita memanfaatkan fakta bahwa Oracle bisa melakukan insert data dari hasil sebuah query dan hasil dari beberapa query bisa digabungkan dengan klausa UNION.

    insert into Mata_Kuliah(
    select 'MI1133', 'Perancangan Basis Data', 3 FROM DUAL
    UNION
    select 'MI3322', 'Migrasi Data', 2 FROM DUAL
    UNION
    select 'TK1064', 'Basis Data', 3 FROM DUAL
    );
    

    dan berikut ini adalah screenshot hasilnya, berhasil meng-insert 3 baris data dengan 1 perintah insert:
    insert dengan dual dan union

  2. Menggunakan Statement INSERT ALL
    Perintah INSERT ALL sebetulnya adalah perintah Multi-Table insert, artinya bisa meng-insert beberapa baris data ke beberapa tabel YANG BERBEDA sekaligus. Namun teknik ini juga bisa digunakan untuk meng-insert beberapa baris data ke SATU TABEL sekaligus.

    insert all
    INTO Mata_Kuliah VALUES ('MI1133', 'Perancangan Basis Data', 3)
    INTO Mata_Kuliah VALUES ('MI3322', 'Migrasi Data', 2)
    INTO Mata_Kuliah VALUES ('TK1064', 'Basis Data', 3)
    Select 1 from DUAL;
    

    Berikut saya tampilkan screenshotnya, berhasil meng-insert tiga baris data sekaligus dengan satu perintah insert
    insert dengan insert all dan select dual

  3. Menggunakan Substitution Variable
    Nah, kalau yang ini adalah teknik yang paling mudah dan paling sederhana, yaitu kita menggunakan substitution variable. Oracle akan meminta input untuk setiap values dalam perintah insert yang diawali dengan ampersand alias tanda tanya (&). Jadi kita tinggal menempelkan ampersand di awal tiap values yang ada di perintah insert.
    Yang perlu diingat adalah jika tipe data kolom yang akan diisi values tersebut bukan numerik maka kita perlu mengapit values tersebut dengan tanda kutip (single quote). Setelah itu kita ulangi terus perintah tersebut dengan tanda slash (/) dan menginputkan setiap values yang diminta

    insert into Mata_Kuliah values ('&KodeMK', '&NamaMK', &SKS);
    

    Berikut adalah screenshotnya:
    insert dengan substitution variable

Sebetulnya masih ada cara lain yaitu dengan menggunakan Oracle SQL Loader tapi cara itu relatif lebih rumit karena banyak parameter yang harus dimasukkan, jadi mungkin akan saya bahas di posting yang terpisah.

Demikian, semoga bermanfaat🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s