Biasanya mereka harus dihindari, tetapi fitur itu ada karena suatu alasan dan ada saatnya untuk menggunakannya. Saya akan mengatakan 90+% kursor yang saya lihat tidak diperlukan. Jika Anda menggunakannya untuk operasi CRUD, itu hampir selalu dapat diulang dalam mode berbasis set. Saya sering melihat orang menggunakan kursor untuk ini karena mereka tidak tahu cara menggunakan gabungan dalam pembaruan atau penghapusan atau bahwa mereka dapat menggunakan pernyataan pilih alih-alih klausa nilai dalam sisipan. Penggunaan lain yang tidak perlu ketika orang berpikir mereka membutuhkannya untuk pemrosesan yang sedikit lebih rumit yang sebenarnya dapat dengan mudah ditangani dengan pernyataan kasus.
Kursor terkadang lebih cepat untuk menghitung sesuatu seperti total berjalan.
Kursor juga berguna untuk beberapa eksekusi proc tersimpan yang diatur untuk menangani hanya satu nilai input pada satu waktu. Saya tidak menggunakan fitur ini untuk menjalankan procs yang disimpan pengguna (kecuali saya tahu saya akan mendapatkan kumpulan data yang sangat kecil) tetapi fitur ini sangat berguna untuk admin database ketika perlu menjalankan procs sistem terhadap beberapa tabel.
Jika Anda membuat email di SQl (bukan tempat terbaik untuk melakukannya, tetapi dalam beberapa sistem di situlah mereka melakukannya) dan tidak ingin seluruh audiens email melihat orang lain dalam daftar atau Anda ingin mempersonalisasi masing-masing email dengan informasi tentang penerima, kursor adalah cara untuk pergi.
Kursor atau loop dapat digunakan juga untuk memproses kumpulan catatan jika seluruh penyisipan/pembaruan/penghapusan berbasis set akan memakan waktu terlalu lama dan mengunci tabel. Ini adalah semacam hibrida antara kursor dan solusi berbasis set dan sering kali merupakan solusi terbaik untuk perubahan besar pada sistem produksi.