SQL - Cursors: A Beginner's Guide
Hai teman-teman, para ahli basisdata masa depan! ? Hari ini, kita akan memulai perjalanan menarik ke dunia SQL Cursors. Jangan khawatir jika Anda belum pernah mendengar tentang mereka sebelumnya - pada akhir panduan ini, Anda akan bisa mengolah data Anda seperti seorang ahli! Ayo masuk ke dalam!
Cursors di SQL
Bayangkan Anda di sebuah buffet (mmm, makanan ?). Anda memiliki piring (cursor Anda), dan Anda berjalan di sepanjang garis, mengambil satu item pada satu waktu. Itu sebenarnya apa yang dilakukan sebuah cursor di SQL - itu memungkinkan Anda untuk mengolah baris dari hasil pengembalian satu per satu, bukan sekali saja.
Dalam istilah teknis, sebuah cursor adalah objek basisdata yang memungkinkan Anda untuk menavigasi melalui baris dari hasil pengembalian, satu baris pada satu waktu. Itu seperti pointer yang mencatat posisi Anda dalam hasil pengembalian.
Mengapa Menggunakan Cursors?
Anda mungkin berpikir, " Mengapa saya tidak bisa menggunakan pernyataan SELECT saja?" Well, kadang-kadang Anda perlu melakukan operasi pada setiap baris secara individual, atau Anda mungkin perlu mengolah hasil pengembalian besar dalam bagian kecil untuk menghemat memori. Itu tempat cursors berguna!
Properti Cursors
Cursors memiliki beberapa properti yang menentukan perilakunya. Mari kita lihat yang utama:
Properti | Deskripsi |
---|---|
Scrollability | Menentukan apakah cursor bisa bergerak maju saja atau kedua arah maju dan mundur |
Sensitivity | Menentukan apakah cursor merefleksikan perubahan yang dibuat pada data dasar |
Updatability | Menentukan apakah cursor bisa digunakan untuk memperbarui atau menghapus baris |
Transactional Behavior | Menentukan apakah cursor terpengaruh oleh batas transaksi |
Jangan khawatir jika ini terlihat sedikit abstrak saat ini. Kita akan melihat mereka dalam aksi segera!
siklus hidup Cursor
Hidup cursor seperti petualangan kecil dengan empat tahap utama:
- Deklarasi
- Pembukaan
- Pengambilan
- Penutupan
Mari kita jelajahi setiap tahap ini dengan beberapa contoh kode.
Pernyataan Mendeklarasikan Cursor
Pertama, kita perlu mendeklarasikan cursor. Ini seperti mengatakan ke SQL, "Hey, saya ingin membuat cursor yang akan bekerja dengan kueri ini."
Ini adalah cara Anda mendeklarasikan cursor:
DECLARE employee_cursor CURSOR FOR
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 10;
Dalam contoh ini, kita mendeklarasikan cursor bernama employee_cursor
yang akan mengambil detail karyawan dari tabel employees
untuk departemen 10.
Pernyataan Pembukaan Cursor
Setelah kita mendeklarasikan cursor, kita perlu membukanya. Ini seperti mengatakan, "Oke, mari kita mulai perjalanan kita melalui hasil pengembalian!"
OPEN employee_cursor;
Pernyataan ini menjalankan kueri SELECT yang terkait dengan cursor dan mempersiapkannya untuk pengambilan.
Pernyataan Pengambilan Cursor
Sekarang, mari kita ke bagian yang menyenangkan - pengambilan data! Ini adalah tempat kita benar-benar mengambil baris satu per satu.
DECLARE @employee_id INT, @first_name VARCHAR(50), @last_name VARCHAR(50);
FETCH NEXT FROM employee_cursor
INTO @employee_id, @first_name, @last_name;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Employee: ' + @first_name + ' ' + @last_name;
FETCH NEXT FROM employee_cursor
INTO @employee_id, @first_name, @last_name;
END
mari kitauraikan ini:
- Kita mendeklarasikan variabel untuk menahan data yang kitaambil.
- Kita gunakan
FETCH NEXT
untuk mengambil baris berikutnya dari cursor. - Kita gunakan loop
WHILE
untuk memproses semua baris.@@FETCH_STATUS = 0
berarti pengambilan sukses. - Dalam loop, kita mencetak nama karyawan dan mengambil baris berikutnya.
Ini seperti berjalan di sepanjang garis buffet, mengambil satu item pada satu waktu, dan melakukan sesuatu dengannya (dalam hal ini, mencetaknya).
Pernyataan Penutupan Cursor
Setelah kita selesai dengan cursor kita, itu sopan untuk menutupnya. Ini melepaskan sumber daya dan umumnya adalah praktek yang baik.
CLOSE employee_cursor;
DEALLOCATE employee_cursor;
Kita tutup cursor dengan CLOSE
dan kemudian DEALLOCATE
untuk menghapusnya sepenuhnya dari memori.
Dan itu adalah dia! Anda telah melalui siklus hidup sepenuhnya dari cursor. ?
Catatan Peringatan
Meskipun cursors sangat kuat, mereka bisa menjadi berat jika digunakan dengan cara yang salah. Itu seperti menggunakan sendok untuk mengosongkan kolam renang - itu akan bekerja, tapi mungkin ada alat yang lebih baik untuk pekerjaan itu. Selalu pertimbangkan operasi berbasis set pertama, dan gunakan cursors hanya saat Anda benar-benar memerlukan pengolahan baris per baris.
Kesimpulan
Selamat! Anda telah mengambil langkah pertama ke dunia SQL cursors. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba kueri dan properti cursor yang berbeda.
Sekarang, Anda bukan lagi pemula cursor! ??
Selamat coding, dan maya kueri Anda selalu mengembalikan hasil yang Anda harapkan! ?
Credits: Image by storyset