Menjalankan Pernyataan Pembaruan dan Penghapusan yang Diposisikan
Penting
Fitur ini akan dihapus dalam versi Windows yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Microsoft merekomendasikan penggunaan fungsionalitas kursor driver.
Setelah aplikasi mengambil blok data dengan SQLFetchScroll, aplikasi dapat memperbarui atau menghapus data di blok. Untuk menjalankan pembaruan atau penghapusan yang diposisikan, aplikasi:
Memanggil SQLSetPos untuk menempatkan kursor pada baris yang akan diperbarui atau dihapus.
Membuat pernyataan pembaruan atau penghapusan yang diposisikan dengan sintaks berikut:
PERBARUI nama tabel
SET pengidentifikasi = kolom {expression | NULL}
[, pengidentifikasi = kolom {expression | NULL}]
WHERE CURRENT OF cursor-name
HAPUS DARI nama tabel DI MANA CURRENT OF cursor-name
Cara term mudah untuk membuat klausul SET dalam pernyataan pembaruan yang diposisikan adalah dengan menggunakan penanda parameter untuk setiap kolom yang akan diperbarui dan menggunakan SQLBindParameter untuk mengikatnya ke buffer set baris agar baris diperbarui. Dalam hal ini, jenis data C parameter akan sama dengan jenis data C dari buffer set baris.
Memperbarui buffer set baris untuk baris saat ini jika akan menjalankan pernyataan pembaruan yang diposisikan. Setelah berhasil menjalankan pernyataan pembaruan yang diposisikan, pustaka kursor menyalin nilai dari setiap kolom di baris saat ini ke cache-nya.
Perhatian
Jika aplikasi tidak memperbarui buffer set baris dengan benar sebelum menjalankan pernyataan pembaruan yang diposisikan, data dalam cache akan salah setelah pernyataan dijalankan.
Menjalankan pernyataan pembaruan atau penghapusan yang diposisikan menggunakan pernyataan yang berbeda dari pernyataan yang terkait dengan kursor.
Perhatian
Klausa WHERE yang dibangun oleh pustaka kursor untuk mengidentifikasi baris saat ini dapat gagal mengidentifikasi baris apa pun, mengidentifikasi baris yang berbeda, atau mengidentifikasi lebih dari satu baris. Untuk informasi selengkapnya, lihat Membuat Pernyataan yang Dicari.
Semua pernyataan pembaruan dan penghapusan yang diposisikan memerlukan nama kursor. Untuk menentukan nama kursor, aplikasi memanggil SQLSetCursorName sebelum kursor dibuka. Untuk menggunakan nama kursor yang dihasilkan oleh driver, aplikasi memanggil SQLGetCursorName setelah kursor dibuka.
Setelah pustaka kursor menjalankan pernyataan pembaruan atau penghapusan yang diposisikan, array status, buffer set baris, dan cache yang dikelola oleh pustaka kursor berisi nilai yang diperlihatkan dalam tabel berikut.
Pernyataan yang digunakan | Nilai dalam array status baris | Nilai dalam buffer set baris |
Nilai dalam buffer cache |
---|---|---|---|
Pembaruan yang diposisikan | SQL_ROW_UPDATED | Nilai baru[1] | Nilai baru[1] |
Penghapusan yang diposisikan | SQL_ROW_DELETED | Nilai lama | Nilai lama |
[1] Aplikasi harus memperbarui nilai dalam buffer set baris sebelum menjalankan pernyataan pembaruan yang diposisikan; setelah menjalankan pernyataan pembaruan yang diposisikan, pustaka kursor menyalin nilai dalam buffer set baris ke cache-nya.