bab iv
TRANSCRIPT
-
BAB IV
CURSOR
4.1 Tujuan Praktikum
Adapun tujuan dari pratikum cursor adalah sebagai berikut :
1. Mengetahui dan memahami kaidah-kaidah penggunaan cursor.
2. Mngetahui dan memahami pernyataan-pernyataan yang digunakan
dalam cursor.
3. Mengetahui batasan-batasan penggunaan cursor.
4.2 Tinjauan Pustaka
4.2.1 Konsep Dasar Cursor
Cursor merupakan pointer yang menunjukkan ke suatu bagian memori
untuk menyimpan hasil perintah SQL seperti select, insert, update, delete.
Pemakaian cursor pada SQL Server mendukung struktur pengulangan (loop)
diantara result set, membaca setiap baris data satu per satu. Beberapa tahapan
yang harus dilakukan dalam memakai cursor antara lain:
1. Deklarasi Cursor
Untuk dapat menggunakan cursor pertama-tama yang harus dilakukan
adalah mendeklarasikan nama cursor dan variabel yang digunakan.
DECLARE cursor_name CURSOR FOR select_statement
Kode program 4.1 Deklarasi Cursor
2. Open Cursor
Untuk menggunakan cursor dan fetch data, anda dapat mengaktifkan
cursor sesuai dengan nama yang telah dideklarasikan sebelumnya.
OPEN cursor_name
Kode program 4.2 Open Cursor
-
3. Membaca Baris Data dari Cursor
Setelah cursor diaktifkan, SQL Server akan membaca baris data secara
berulang-ulang (loop) dari baris data dari suatu tabel.
4. Menutup Cursor
Menutup cursor dilakukan jika ingin mengunci data setelah tidak
digunakan.
CLOSE cursor_name
Kode program 4.3 Menutup Cursor
5. Dealokasi Cursor
Dealokasi cursor bertujuan untuk membuang atau menghapus cursor dari
memori jika sudah tidak digunakan lagi. DECLARE nama_cursor [INSENSITIVE][SCROOL] CURSOR FOR select_statement DECLARE [FOR {READ ONLY|UPDATE [OF nama_kolom[.....n]}] OPEN nama_cursor CLOSE nama_cursor DEALLOCATE nama_cursor
Kode program 4.4 Dealokasi Cursor
Suatu query yang dibuat untuk menyamakan beberapa record tidak harus
mempunyai clause into. Jika suatu query diharapkan mengembalikan beberapa
record, maka cursor harus dipakai sebagai penggantinya. Cursor dapat digunakan
untuk menegaskan satu record pada suatu waktu. Dengan cursor, tiap-tiap record
dapat dikembalikan oleh query oleh individual pada suatu waktu. Berikut contoh
perintah select untuk menemukan record dalam basis data.
Select * from state
Kode program 4.5 Perintah SELECT Pencarian Data
Perintah ini akan gagal dijalankan meski program telah benar karena query
akan memilih semua nama dalam tabel. Query akan menemukan 50 tuple dalam
state basis data.
-
database store main select * from state end main
Kode program 4.6 Sintaks Pencarian Tuple Dalam State Basis Data
Program ini akan dikompile dan dijalankan. Program tersebut akan
berhenti dan menampilkan pesan, a subquery has return not exactly one value .
Hal ini disebabkan perintah select menemukan lebih dari satu record.
Masalah ini dapat diselesaikan dengan cursor, karena cursor
dideklarasikan untuk mengoperasikan perintah select. Perintah select digabungkan
dengan cursor. Perintah select dapat menyamakan suatu kelompok record dalam
basis data. Cursor kemudian dapat digunakan untuk menegaskan masing-masing
pilihan record. Berikut contoh penggabungan perintah select dan cursor. Declare c_state cursor for Select*from state
Kode program 4.7 Sintaks Penggabungan Perintah SELECT dan Cursor
Perintah tersebut membuat cursor dengan nama c_state. Cursor dapat
memilih masing-masing record yang dikembalikan oleh perintah select*from
state.
4.2.2 Fungsi Cursor Fungsi cursor adalah menghasilkan recor-record tertentu secara sfesifik
Membantu akses store procedure yang berhubungan dengan manipulasi data serta
dalam penggunaan trigger.
4.2.3 Keuntungan Cursor Keuntungan utama cursor adalah anda dapat mengakses data baris demi
baris. Yang dimaksud dengan hasil-hasil data yang ditentukan adalah kumpulan
baris yang diperoleh dari operasi SELECT yang memenuhi kriteria yang
dinyatakan dalam WHERE clause.
4.3 Pembahasan dan Analisa
Adapun pembahasan dan analisa dari modul cursor ini adalah sebagai
berikut.
-
5.3.1 Pembahasan Cursor untuk menghitung total jumlah bayar mahasiswa dari
tb_detail_kwitansi dan simpan di tb_kwitansi kolom total_bayar serta kekurangan
pembayaran mahasiswa dan simpan di tabel tb_kwitansi kolom remark.
Gambar 4.1 Tabel Detail Kwitansi Sebelum di Isi
Gambar 4.2 Tabel Detail Kwitansi Sesudah di Isi
Pada gambar 4.1 terdapat kwitansi_id no 6 dengan jumlah bayar yang
masih 0 dengan setatus masih open. Kemudian pada gambar 4.2 setelah dilakukan
pembayaran, kwitansi_id no 6 setatusnya berubah menjadi closed. Setelah itu
dilakukan pemanggilan cursor_total_bayar seperti pada gambar 4.3
-
Gambar 4.3 Pemanggilan Cursor
Setelah melakukan pemanggilan cursor_total_bayar maka hasil dari cursor
dapat dilihat pada gambar 4.4
Gambar 4.4 Hasil Pemanggilan Cursor
Dari gambar diatas dapat dilihat terjadi perubahan pada tabel kwitansi,
pada kwitansi_id no 6 total bayarnya berubah menjadi 520000. Kemudian
dilakukan cursor untuk meng copy data dari tb_kwitansi dan tabel
tb_kwitansi_detail ke dalam tabel baru yaitu tabel X.
-
Gambar 4.5 Pemanggilan Cursor Untuk Copy Data ke tb_x
Setelah melakukan pemanggilan maka tb_x akan terisi seperti gambar 4.6
Gambar 4.6 Hasil Copy Pada tb_ x