Bagikan melalui


BUKA (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Membuka kursor server Transact-SQL dan mengisi kursor dengan menjalankan pernyataan Transact-SQL yang ditentukan pada pernyataan DECLARE CURSOR atau SET cursor_variable .

Konvensi sintaks transact-SQL

Sintaksis

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

GLOBAL
Menentukan bahwa cursor_name mengacu pada kursor global.

cursor_name
Adalah nama kursor yang dideklarasikan. Jika kursor global dan lokal ada dengan cursor_name sebagai namanya, cursor_name mengacu pada kursor global jika GLOBAL ditentukan; jika tidak, cursor_name mengacu pada kursor lokal.

cursor_variable_name
Adalah nama variabel kursor yang mereferensikan kursor.

Keterangan

Jika kursor dideklarasikan dengan opsi INSENSITIVE atau STATIC, OPEN membuat tabel sementara untuk menahan tataan hasil. OPEN gagal ketika ukuran baris apa pun dalam kumpulan hasil melebihi ukuran baris maksimum untuk tabel SQL Server. Jika kursor dideklarasikan dengan opsi KEYSET, OPEN membuat tabel sementara untuk menahan set kunci. Tabel sementara disimpan dalam tempdb.

Setelah kursor dibuka, gunakan fungsi @@CURSOR_ROWS untuk menerima jumlah baris yang memenuhi syarat di kursor terakhir yang dibuka.

Catatan

SQL Server tidak mendukung pembuatan kursor Transact-SQL berbasis keyset atau statis secara asinkron. Operasi kursor Transact-SQL seperti OPEN atau FETCH di-batch, sehingga tidak perlu membuat kursor Transact-SQL asinkron. SQL Server terus mendukung kursor server antarmuka pemrograman aplikasi (API) berbasis kunci asinkron atau statis di mana OPEN latensi rendah menjadi perhatian, karena perjalanan pulang pergi klien untuk setiap operasi kursor.

Contoh

Contoh berikut membuka kursor dan mengambil semua baris.

DECLARE Employee_Cursor CURSOR FOR  
SELECT LastName, FirstName  
FROM AdventureWorks2022.HumanResources.vEmployee  
WHERE LastName like 'B%';  
  
OPEN Employee_Cursor;  
  
FETCH NEXT FROM Employee_Cursor;  
WHILE @@FETCH_STATUS = 0  
BEGIN  
    FETCH NEXT FROM Employee_Cursor  
END;  
  
CLOSE Employee_Cursor;  
DEALLOCATE Employee_Cursor;  

Lihat Juga

TUTUP (T-SQL)
@@CURSOR_ROWS (T-SQL)
DEALLOCATE (Transact-SQL)
DEKLARASIKAN KURSOR (Transact-SQL)
FETCH (Transact-SQL)