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...

[Dokumentasi] Contoh sederhana export excel dari Visual Basic 6.0

Dalam pemrograman basisdata, sebagai programmer, kita dituntut untuk dapat menghasilkan output berupa laporan. Cara menghasilkan laporan tersebut tentunya berbeda-beda. Salah satu cara menghasilkan output laporan adalah menampilkan laporan tersebut ke excel. Berikut ini diuraikan langkah-langkah pembuatan output excel sederhana dengan menggunakan Visual Basic 6.0 : Buat satu project baru pada visual basic 6.0 Tambahkan 1 CommandButton pada form dan beri nama Command1 Buka code viewer pada form yang telah disediakan CommandButton tadi Deklarasikan object untuk menghasilkan file excel Dim oExcel As Object Dim oBook As Object Dim oSheet As Object Double Click pada CommandButton tadi untuk menambahkan code pada event click'- Set object yang telah dideklarasikan sebelumnya untuk membuat objek Excel Set oExcel = CreateObject("Excel.Application") Set oBook = oExcel.Workbooks.Add Set oSheet = oBook.Worksheets(1) '- Lakukan pengaturan untuk masing-masing kolom o...

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...