Oracle PL/SQL Sisipkan, Perbarui, Hapus & Pilih Ke [Contoh]
Dalam tutorial ini, kita akan mempelajari cara menggunakannya SQL di PL/SQL. SQL adalah komponen sebenarnya yang menangani pengambilan dan pembaruan data dalam database sedangkan PL/SQL adalah komponen yang memproses data tersebut. Selanjutnya pada artikel ini kita juga akan membahas cara menggabungkan SQL dalam blok PL/SQL.
Transaksi DML di PL/SQL
DML adalah singkatan dari Bahasa Manipulasi Data. Pernyataan ini terutama digunakan untuk melakukan aktivitas manipulasi. Ini berkaitan dengan operasi di bawah ini.
- Penyisipan Data
- Pembaruan Data
- Penghapusan Data
- Pemilihan Data
Di PL/SQL, kita bisa melakukan manipulasi data hanya dengan menggunakan perintah SQL.
Penyisipan Data
Di PL/SQL, kita bisa memasukkan data ke tabel mana pun menggunakan perintah SQL INSERT INTO. Perintah ini akan mengambil nama tabel, kolom tabel, dan nilai kolom sebagai input dan memasukkan nilai ke dalam tabel dasar.
Perintah INSERT juga dapat mengambil nilai langsung dari tabel lain menggunakan pernyataan 'SELECT' daripada memberikan nilai untuk setiap kolom. Melalui pernyataan 'SELECT', kita dapat menyisipkan baris sebanyak yang ada di tabel dasar.
sintaks:
BEGIN
INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
VALUES(<valuel><value2>,...:<value_n>);
END;
- Sintaks di atas menunjukkan perintah INSERT INTO. Nama tabel dan nilai merupakan kolom wajib, sedangkan nama kolom tidak wajib jika pernyataan sisipan memiliki nilai untuk semua kolom tabel.
- Kata kunci 'VALUES' wajib diisi jika nilai diberikan secara terpisah seperti gambar di atas.
sintaks:
BEGIN
INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
- Sintaks di atas menunjukkan perintah INSERT INTO yang mengambil nilai langsung dari menggunakan perintah PILIH.
- Kata kunci 'NILAI' tidak boleh ada dalam kasus ini karena nilai tidak diberikan secara terpisah.
Pembaruan Data
Pembaruan data berarti pembaruan nilai kolom mana pun dalam tabel. Ini dapat dilakukan dengan menggunakan pernyataan 'UPDATE'. Pernyataan ini mengambil nama tabel, nama kolom dan nilai sebagai input dan memperbarui data.
sintaks:
BEGIN UPDATE <table_name> SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Sintaks di atas menunjukkan UPDATE. Kata kunci 'SET' menginstruksikan mesin PL/SQL untuk memperbarui nilai kolom dengan nilai yang diberikan.
- Klausa 'WHERE' bersifat opsional. Jika klausa ini tidak diberikan, maka nilai kolom yang disebutkan di seluruh tabel akan diperbarui.
Penghapusan Data
Penghapusan data berarti menghapus satu record penuh dari tabel database. Perintah 'DELETE' digunakan untuk tujuan ini.
sintaks:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Sintaks di atas menunjukkan perintah DELETE. Kata kunci 'FROM' bersifat opsional dan dengan atau tanpa klausa 'FROM', perintah akan berperilaku sama.
- Klausa 'WHERE' bersifat opsional. Jika klausa ini tidak diberikan, maka seluruh tabel akan dihapus.
Pemilihan Data
Proyeksi/pengambilan data berarti mengambil data yang diperlukan dari tabel database. Hal ini dapat dicapai dengan menggunakan perintah 'PILIH' dengan klausa 'INTO'. Perintah 'SELECT' akan mengambil nilai dari database, dan klausa 'INTO' akan menetapkan nilai-nilai ini ke variabel lokal dari database. blok PL/SQL.
Di bawah ini adalah poin-poin yang perlu diperhatikan dalam pernyataan 'PILIH'.
- Pernyataan 'SELECT' harus mengembalikan hanya satu record saat menggunakan klausa 'INTO' karena satu variabel hanya dapat menampung satu nilai. Jika pernyataan 'SELECT' mengembalikan lebih dari satu nilai maka pengecualian 'TOO_MANY_ROWS' akan dimunculkan.
- Pernyataan 'SELECT' akan memberikan nilai ke variabel dalam klausa 'INTO', sehingga perlu mendapatkan setidaknya satu record dari tabel untuk mengisi nilainya. Jika tidak mendapatkan record apa pun, maka pengecualian 'NO_DATA_FOUND' dimunculkan.
- Jumlah kolom dan tipe datanya pada klausa 'SELECT' harus sesuai dengan jumlah variabel dan tipe datanya pada klausa 'INTO'.
- Nilai diambil dan diisi dalam urutan yang sama seperti yang disebutkan dalam pernyataan.
- Klausa 'WHERE' bersifat opsional yang memungkinkan pembatasan lebih lanjut pada catatan yang akan diambil.
- Pernyataan 'SELECT' dapat digunakan dalam kondisi 'WHERE' pada pernyataan DML lainnya untuk menentukan nilai kondisi.
- Pernyataan 'SELECT' saat menggunakan pernyataan 'INSERT', 'UPDATE', 'DELETE' tidak boleh memiliki klausa 'INTO' karena tidak akan mengisi variabel apa pun dalam kasus ini.
sintaks:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Sintaks di atas menunjukkan perintah SELECT-INTO. Kata kunci 'FROM' wajib diisi untuk mengidentifikasi nama tabel dari mana data perlu diambil.
- Klausa 'WHERE' bersifat opsional. Jika klausa ini tidak diberikan, maka data dari seluruh tabel akan diambil.
Contoh 1: Dalam contoh ini, kita akan melihat cara melakukan operasi DML PL / SQL. Kami akan memasukkan empat catatan di bawah ini ke dalam tabel emp.
| EMP_NAME | EMP_TIDAK | GAJI | MANAGER |
|---|---|---|---|
| BBB | 1000 | 25000 | AAA |
| XXX | 1001 | 10000 | BBB |
| YYY | 1002 | 10000 | BBB |
| Zzz | 1003 | 7500 | BBB |
Kemudian kita akan memperbarui gaji 'XXX' menjadi 15000, dan kita akan menghapus catatan karyawan 'ZZZ'. Terakhir, kita akan memproyeksikan detail karyawan 'XXX'.
DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER;
l_manager VARCHAR2(250);
BEGIN
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES(โBBBโ,1000,25000,โAAAโ);
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,โBBB);
INSERT INTO emp(emp_name,emp_no,salary,managed
VALUES(โYYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES(โZZZ',1003,7500,'BBB'):โญ
COMMIT;
Dbms_output.put_line(โValues Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line(โValues Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT:
Dbms_output.put_line('Values Deleted );
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';
Dbms output.put line(โEmployee Detailโ);
Dbms_output.put_line(โEmployee Name:โ||l_emp_name);
Dbms_output.put_line(โEmployee Number:โ||l_emp_no);
Dbms_output.put_line(โEmployee Salary:โ||l_salary);
Dbms output.put line(โEmplovee Manager Name:โ||l_manager):
END;
/
Keluaran:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Penjelasan Kode:
- Baris kode 2-5: Mendeklarasikan variabel.
- Baris kode 7-14: Memasukkan catatan ke dalam tabel emp.
- Baris kode 15: Melakukan transaksi penyisipan.
- Baris kode 17-19: Memperbarui gaji karyawan 'XXX' menjadi 15000
- Baris kode 20: Melakukan transaksi pembaruan.
- Baris kode 22: Menghapus catatan 'ZZZ'
- Baris kode 23: Melakukan transaksi penghapusan.
- Baris kode 25-27: Memilih record 'XXX' dan mengisinya ke dalam variabel l_emp_name, l_emp_no, l_salary, l_manager.
- Baris kode 28-32: Menampilkan nilai catatan yang diambil.

