Interaksi PL/SQL dengan Oracle
6.1.4. SQL Pseudocolumns
PL/SQL mengenal SQL pseudocolumns berikut ini, yang menghasilkan item data tertentu: CURRVAL, LEVEL, NEXTVAL, ROWID, dan ROWNUM. Pseudocolumns bukan merupakan kolom-kolom aktual di dalam table namun mereka berkelakuan seperti kolom-kolom. Sebagai contoh, kita dapat menampilkan nilai-nilai dari pseudocolumn. Namun, kita tidak dapat menambahkan, mengubah, atau menghapus pseudocolumn. Juga, pseudocolumns diperbolehkan dalam perintah-perintah SQL, namun tidak dalam perintah-perintah prosedural.
6.1.4.1. CURRVAL dan NEXTVAL
Sebuah sequence adalah sebuah schema object yang menghasilkan angka-angka sekuensial. Ketika kita menciptakan sequence, kita dapat menentukan nilai awal dan pertambahannya. CURRVAL menghasilkan nilai terkini dari sequence tertentu.
Sebelum kita dapat mereferensi CURRVAL di dalam sebuah session, kita harus menggunakan NEXTVAL untuk mengenerate angka. Referensi terhadap NEXTVAL menyimpan nomor sequence terkini di dalam CURVALL.
NEXTVAL menaikkan sequence dan menghasilkan nilai berikutnya. Untuk mendapatkan nilai terkini atau berikutnya dari sebuah sequence, kita harus menggunakan notasi titik, seperti contoh berikut ini:
sequence_name.CURRVAL sequence_name.NEXTVAL
Setelah menciptakan sequence, kita dapat menggunakannya untuk menghasilkan rangkaian nilai unik untuk pemrosesan transaksi. Namun, kita hanya dapat menggunakan CURRVAL dan NEXTVAL di dalam daftar SELECT, klausa VALUES, dan klausa SET. Di dalam contoh berikut ini, kita menggunakan sequence untuk menambahkan nomor pegawai yang sama ke dalam dua table:
INSERT INTO emp VALUES (empno_seq.NEXTVAL, my_ename, ...); INSERT INTO sals VALUES (empno_seq.CURRVAL, my_sal, ...);
Jika transaksi menghasilkan nilai berurutan, maka nilai sequence akan ditambahkan segera baik kita melakukan commit atau roll back terhadap transaksi tersebut.
6.1.4.2. LEVEL
Kita menggunakan LEVEL bersama perintah SELECT CONNECT BY untuk mengatur baris-baris data dari database table menjadi struktur pohon (tree). LEVEL menghasilkan nomor level dari node di dalam struktur pohon. Level untuk root (akar) adalah 1, anak dari root adalah level 2, cucunya adalah level 3, dan seterusnya.
Di dalam klausa START WITH, kita menentukan kondisi yang mengidentifikasi akar dari pohon. Kita menentukan penunjuk bagaimana query menjalankan tree (turun dari root atau naik dari branches (cabang)) dengan operator PRIOR.
6.1.4.3. ROWID
ROWID menghasilkan rowid (alamat biner) dari baris data di dalam database table. Kita dapat menggunakan variables bertipe UROWID untuk menyimpan rowids dalam format yang dapat dibaca. Di dalam contoh berikut ini, kita mendeklarasikan variable dengan nama row_id untuk tujuan tersebut:
DECLARE row_id UROWID;
Ketika kita menampilkan atau mengambil rowid fisik dan memberikannya kepada variable UROWID, kita dapat menggunakan function ROWIDTOCHAR, yang mengkonversi nilai biner menjadi string karakter 18-byte. Kemudian, kita dapat membandingkan variable UROWID dengan pseudocolumn ROWID di dalam klausa WHERE dari perintah UPDATE atau DELETE untuk mengidentifikasi baris data terakhir yang diambil dari cursor.
6.1.4.4. ROWNUM
ROWNUM menghasilkan angka yang mengindikasikan urutan dimana baris-baris data ditampilkan dari table. Baris data pertama yang ditampilkan memiliki ROWNUM 1, yang kedua memiliki ROWNUM 2, dan seterusnya. Jika perintah SELECT mengandung klausa ORDER BY, ROWNUMs diberikan kepada baris-baris data yang ditampilkan sebelum pengurutan selesai.
Kita dapat menggunakan ROWNUM di dalam perintah UPDATE untuk memberikan nilai-nilai unik kepada setiap baris data di dalam table. Kita dapat juga menggunakan ROWNUM di dalam klausa WHERE dari perintah SELECT untuk membatasi jumlah baris data yang ditampilkan, seperti berikut ini:
DECLARE CURSOR c1 IS SELECT empno, sal FROM emp WHERE sal > 2000 AND ROWNUM < 10; -- menghasilkan 10 baris data
Nilai ROWNUM bertambah hanya ketika baris data ditampilkan, sehingga penggunaan yang berarti untuk ROWNUM di dalam klausa WHERE adalah
... WHERE ROWNUM < constant; ... WHERE ROWNUM <= constant;
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Buku ini membahas berbagai macam tip dan trik yang sangat berguna bagi Anda pembaca pengguna database Oracle. Pemula, mahasiswa, programmer, maupun database administrator yang mengharapkan solusi cepat dalam menangani permasalahan-permasalahan dalam penggunaan database Oracle dapat membaca buku ini. Anda tidak harus membaca buku ini secara urut karena buku ini di susun berdasarkan topik permasalahan, dan Anda dapat membaca topik-topik yang sesuai dengan permasalahan yang Anda hadapi. Dapat di beli di toko buku Gramedia, Gunung Agung, Uranus, Karisma, Uranus dsb. |


































