Skip to main content

[Dokumentasi] Penggunaan Fetch dan Cursor pada SQL Server 2000

Seringkali seorang programmer dihadapkan pada suatu kasus yang mengharuskan untuk memproses data dari tabel, di mana data tersebut tidak bisa hanya dengan menggunakan perintah select, akan tetapi harus diproses dengan menggunakan perulangan/looping. Sementara untuk membuat suatu program kecil, hal itu dianggap kurang praktis. Dalam Ms SQL Server (khususnya Ms SQL Server 2000), tersedia suatu fitur yang bisa digunakan, yakni Fetch dan Cursor.
Cursor dapat diartikan sebagai suatu variabel yang digunakan untuk menampung hasil query satu baris/record atau lebih, di mana ia juga menjadi penampung sekaligus pointer atas hasil eksekusi query.
Di sini, kita akan coba menguraikan penggunaan sederhana dari Fetch dan Cursor, sehingga bisa dikembangkan sendiri sesuai dengan kebutuhan.
Langkah pertama, kita buat satu tabel, dalam kasus ini kita gunakan tabel dengan nama Barang, dengan 3 field (Kode, NamaBarang dan Jumlah)
CREATE TABLE [Barang] (
[Kode] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[NamaBarang] [varchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Jumlah] [int] NULL ,
CONSTRAINT [PK_Barang] PRIMARY KEY CLUSTERED
(
[Kode]
) ON [PRIMARY]
) ON [PRIMARY]
GO
Masukkan beberapa data ke dalam tabel yang baru dibuat
Insert Into Barang (Kode, NamaBarang, Jumlah) Values ('1', 'Buku Tulis', '100')
Insert Into Barang (Kode, NamaBarang, Jumlah) Values ('2', 'Pena', '150')
Insert Into Barang (Kode, NamaBarang, Jumlah) Values ('3', 'Penggaris', '50')
Selanjutnya kita buat Transact-SQL dengan menggunakan Fetch dan Cursor. Berikut tahapan-tahapan nya
1. Declare
Mendeklarasi nama cursor yang dilanjutkan dengan struktur query select
DECLARE [nama cursor] CURSOR FOR [Query]
Contoh:
DECLARE barang_cursor CURSOR FOR
SELECT Kode, NamaBarang, Jumlah FROM Barang
WHERE NamaBarang ''
ORDER BY Kode, NamaBarang
2. Open
Setelah didekalarasi, cursor harus tersebut dibuka terlebih dahulu sebelum digunakan.
OPEN [nama cursor]
Contoh:
OPEN barang_cursor
3. Fetch
Fetch merupakan perintah untuk mengambil isi cursor yakni hasil query pada saat cursor tersebut dideklarasikan dan berikutnya ditampung ke dalam variabel.
FETCH [nama cursor] INTO [variabel1, variabel2,..]
Contoh:
FETCH NEXT FROM barang_cursor
INTO @Kode, @NamaBarang, @Jumlah
Apabila hasil query lebih dari 1 baris, maka dapat ditambahkan perulangan dengan melihat kondisi @@FETCH_STATUS
4. Close dan Deallocate
CLOSE merupakan perintah untuk menutup Cursor, kemudian Deallocate digunakan untuk melepaskan.
CLOSE [nama cursor]
DEALLOCATE [nama cursor]
Contoh:
CLOSE barang_cursor
DEALLOCATE barang_cursor
Berikut Query Keseluruhan
/* Untuk memastikan bahwa kita menggunakan database yang benar, jalankan perintah use database di mana tabel tersebut digunakan */
USE Barang
GO
/* Deklarasikan variabel-variabel yang akan dijadikan tujuan penyimpanan hasil dari FETCH. */
DECLARE @Kode varchar(50), @NamaBarang varchar(150), @Jumlah int
/* Deklarasikan Cursor yang akan digunakan, dilanjutkan dengan perintah Select dari tabel yang akan diproses. */
DECLARE barang_cursor CURSOR FOR
SELECT Kode, NamaBarang, Jumlah FROM Barang
WHERE NamaBarang ''
ORDER BY Kode, NamaBarang
/* Mengidentifikasi Cursor */
OPEN barang_cursor
/*
Menjalankan fetch pertama dan menampung isi cursor ke dalam variabel-variabel.
Pastikan posisi-posisi variabel pada saat menjalankan fetch memiliki urutan yang sama dengan field-field yang seharusnya yang ada di dalam perintah SELECT di atas
*/
FETCH NEXT FROM barang_cursor
INTO @Kode, @NamaBarang, @Jumlah
/*
Lakukan Looping data yang dihasilkan oleh Cursor
Melakukan pengecekan @@FETCH_STATUS untuk memastikan apabila masih terdapat beberapa baris data.
*/
WHILE @@FETCH_STATUS = 0
BEGIN
/* Menampilkan nilai dari variabel-variabel hasil dari Fetch. */
PRINT 'Barang : ' + @Kode + ' - ' + @NamaBarang + ' - ' + Cast(@Jumlah As Varchar(10))
/* Mengembalikan ke bagian FETCH jika baris data masih ada. Baris ini akan dieksekusi jika fetch sebelumnya berhasil dieksekusi. */
FETCH NEXT FROM barang_cursor
INTO @Kode, @NamaBarang, @Jumlah
END
/* Terakhir, jangan lupa untuk selalu menutup dan melepaskan Cursor yang sudah kita gunakan, setelah semua proses dijalankan */
CLOSE barang_cursor
DEALLOCATE barang_cursor
GO

Comments

Popular posts from this blog

[Dokumentasi] Reporting Program VB6 dengan Crystal Report 8.5 menggunakan TTX File (II)

Dalam tulisan kali ini, kita akan menampilkan data dari program aplikasi yang kita buat dengan VB6 ke laporan Crystal Report (TTX File). Di bagian sebelumnya, sudah disampaikan langkah-langkah pembuatan laporan Crystal Report dengan TTX File. Untuk menghubungkan laporan tersebut dari program aplikasi yang kita buat, dapat mengikuti langkah-langkah berikut : 1. Buka IDE Ms. VB 6, pilih New - Standard Exe, kemudian klik tombol Open 2. Pilih menu Project - Component (Ctrl+T), tab Controls akan menampilkan daftar komponen teregister yang dapat kita gunakan untuk program aplikasi kita, ceklis komponen Crystal Report Viewer Control, kemudian klik tombol OK 3. Pilih menu Project - References, ceklis Crystal Reports 8.5 ActiveX Designer Run Time Library dan Microsoft ActiveX Data Objects 2.x Library, kemudian klik tombol OK 4. Pada Toolbox akan menambah 1 komponen dengan nama CRViewer, drag komponen tersebut dan drop di form yang kita gunakan. 5. Atur tata letak komponen tersebut pada for...

Twitter memposting keuntungan pertama meski ada masalah bot

Jaringan sosial lambat berkembang karena berkaitan dengan kekhawatiran akan jutaan akun palsu yang melakukan tweet dan retweet di seluruh platform.   Ada jutaan akun palsu yang melakukan tweet , retweet dan like ke sebagian besar akun terkenal di Twitter. Jadi apa yang akan dilakukan perusahaan tentang hal itu?   Masalahnya telah menggelegak di bawah permukaan di Twitter selama bertahun-tahun. Tapi itu dibawa ke permukaan oleh The New York Times, yang menemukan perusahaan yang menghasilkan uang dengan menggunakan bots - program komputer otomatis yang terkadang berperan sebagai orang sungguhan - untuk memperbanyak pengikut selebriti, eksekutif bisnis, dan bahkan anggota dewan Twitter sendiri sebenarnya punya. Twitter mulai membersihkan jutaan akun palsu untuk menanggapi hal ini. Sulit untuk mengatakan berapa banyak akun palsu di luar sana. Sebuah studi yang dirilis tahun lalu menemukan bahwa sebanyak 15 persen akun Twitter aktif dikendalikan oleh bot. Twitter menga...

Manfaat Temulawak bagi Kesehatan

Temulawak merupakan tanaman rempah asli Indonesia yang memiliki beragam khasiat untuk kesehatan. Bagian yang sering dimanfaatkan adalah bagia akar atau sering jug disebut dengan rimpang. Bagian inilah yang sering diolah untuk dijadikan sebagai obat berbagai penyakit. Khasiat dari tanaman temulawak adalah untuk mengatasi gangguan ginjal, melancarkan pencernaan, menyehatkan jantung, dan menjaga kesehatan hati. Sebenarnya masih banyak jenis penyakit lain yang bisa disembuhkan dengan tanaman obat ini. Apalagi bila penggunaannya dikombinasikan dengan tanaman obat lain, tentu khasiatnya akan semakin terasa. Manfaat Temulawak bagi Kesehatan Berikut ini manfaat temulawak bagi kesehatan: 1. Melancarkan Proses Pencernaan Manfaat temulawak yang pertama adalah melancarkan proses pencernaan. Hal ini dikarenakan temulawak mengandung senyawa yang diketahui dapat merangsang produksi empedu, yang dapat membantu meningkatkan kesehatan pencernaan dan mengatasi masalah pencernaan. 2....