SQL - Cursors: A Beginner's Guide

Hai daar, bakal ahli pangkalan data masa depan! ? Hari ini, kita akan melangkah ke dunia yang menarik SQL Cursors. Jangan khawatir jika Anda belum pernah mendengar tentang mereka sebelumnya - oleh akhir panduan ini, Anda akan mengolah data Anda seperti seorang pro! Ayo masuk!

SQL - Cursors

Cursors di SQL

Bayangkan Anda di sebuah buffet (mmm, makanan ?). Anda memiliki piring (cursor Anda), dan Anda mengurusi barisan, memilih satu item pada satu waktu. Itu sebenarnya apa yang dilakukan cursor di SQL - itu memungkinkan Anda untuk memproses baris dari hasil set satu per satu, bukan sekaligus.

Dalam istilah yang lebih teknis, cursor adalah objek pangkalan data yang memungkinkan Anda untuk menelusuri baris dari hasil set, satu baris pada satu waktu. Itu seperti sebuah pointer yang mencatat posisi Anda di hasil set.

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 memproses hasil set yang besar dalam bagian kecil untuk menyimpan memori. Itu di mana cursors berguna!

Properti Cursors

Cursors memiliki beberapa properti yang menentukan perilakunya. Mari kita lihat yang utama:

Properti Deskripsi
Scrollability Menentukan apakah cursor dapat bergerak ke depan saja atau ke depan dan ke belakang
Sensitivity Menentukan apakah cursor mencerminkan perubahan yang dibuat pada data dasar
Updatability Menentukan apakah cursor dapat digunakan untuk memperbarui atau menghapus baris
Transactional Behavior Menentukan apakah cursor terpengaruh oleh batas transaksi

Jangan khawatir jika ini terlihat agak abstrak saat ini. Kita akan melihat mereka dalam aksi segera!

siklus kehidupan Cursor

Kehidupan cursor seperti sebuah petualangan kecil dengan empat tahap utama:

  1. Deklarasi
  2. Pembukaan
  3. Penarikan
  4. Penutupan

Ayo jelajahi setiap tahap ini dengan beberapa contoh kode.

Declare Cursor Statement

Pertama-tama, kita perlu mendeklarasikan cursor kami. 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 rincian karyawan dari tabel employees untuk departemen 10.

Open Cursor Statement

Setelah kita mendeklarasikan cursor, kita perlu membukanya. Ini seperti mengatakan, "Oke, mari kita mulai perjalanan kita melalui hasil set!"

OPEN employee_cursor;

Perintah ini menjalankan kueri SELECT yang terkait dengan cursor dan mempersiapkannya untuk penarikan.

Fetch Cursor Statement

Sekarang kita masuk ke bagian yang menarik - penarikan data! Ini di mana 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 kita tarik.
  2. Kita gunakan FETCH NEXT untuk mengambil baris berikutnya dari cursor.
  3. Kita gunakan loop WHILE untuk memproses semua baris. @@FETCH_STATUS = 0 berarti penarikan sukses.
  4. Dalam loop, kita mencetak nama karyawan dan menarik baris berikutnya.

Ini seperti mengurusi barisan di buffet, mengambil satu item pada satu waktu, dan melakukan sesuatu dengannya (dalam hal ini, mencetaknya).

Close Cursor Statement

Setelah kita selesai dengan cursor kita, itu sopan untuk menutupnya. Ini melepaskan sumber daya dan biasanya adalah praktek yang baik.

CLOSE employee_cursor;
DEALLOCATE employee_cursor;

Kita tutup cursor dengan CLOSE dan kemudian DEALLOCATEnya untuk menghapusnya sepenuhnya dari memori.

Dan begitu saja! Anda telah melalui siklus keseluruhan cursor. ?

Catatan Peringatan

Meskipun cursors sangat kuat, mereka bisa menjadi berat jika digunakan secara 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 berdasarkan set pertama, dan gunakan cursors hanya saat Anda benar-benar memerlukan pengolahan baris demi baris.

Kesimpulan

Selamat! Anda baru saja 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 seorang pemula cursor! ??

Selamat mengoding, dan mayat kueri Anda selalu mengembalikan hasil yang Anda harapkan! ?

Credits: Image by storyset