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!

SQL - Cursors

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:

  1. Deklarasi
  2. Pembukaan
  3. Pengambilan
  4. 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:

  1. Kita mendeklarasikan variabel untuk menahan data yang kitaambil.
  2. Kita gunakan FETCH NEXT untuk mengambil baris berikutnya dari cursor.
  3. Kita gunakan loop WHILE untuk memproses semua baris. @@FETCH_STATUS = 0 berarti pengambilan sukses.
  4. 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