sp_cursorprepare (T-SQL)
Berlaku untuk:SQL Server
Mengkompilasi pernyataan kursor atau batch ke dalam rencana eksekusi, tetapi tidak membuat kursor. Pernyataan yang dikompilasi nantinya dapat digunakan oleh sp_cursorexecute. Prosedur ini, ditambah dengan sp_cursorexecute, memiliki fungsi yang sama dengan sp_cursoropen, tetapi dibagi menjadi dua fase. sp_cursorprepare dipanggil dengan menentukan ID = 3 dalam paket aliran data tabular (TDS).
Sintaks
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argumen
prepared_handle
Pengidentifikasi handel siap pakai yang dihasilkan SQL Server yang mengembalikan nilai bilangan bulat.
Catatan
prepared_handle kemudian disediakan ke prosedur sp_cursorexecute untuk membuka kursor. Setelah handel dibuat, handel tersebut ada sampai Anda keluar atau sampai Anda secara eksplisit menghapusnya melalui prosedur sp_cursorunprepare.
params
Mengidentifikasi pernyataan berparameter. Definisi param variabel digantikan untuk penanda parameter dalam pernyataan. param adalah parameter yang diperlukan yang memanggil nilai input ntext, nchar, atau nvarchar . Masukkan nilai NULL jika pernyataan tidak diparameterkan.
Catatan
Gunakan string ntext sebagai nilai input saat stmt diparameterkan dan nilai PARAMETERIZED_STMT scrollopt aktif.
stmt
Menentukan kumpulan hasil kursor. Parameter stmt diperlukan dan memanggil nilai input ntext, nchar , atau nvarchar .
Catatan
Aturan untuk menentukan nilai stmt sama dengan yang untuk sp_cursoropen, dengan pengecualian bahwa jenis data string stmt harus ntext.
opsi
Parameter opsional yang mengembalikan deskripsi kolom kumpulan hasil kursor. opsi memerlukan nilai input int berikut.
Nilai | Deskripsi |
---|---|
0x0001 | RETURN_METADATA |
scrollopt
Opsi Gulir. scrollopt adalah parameter opsional yang memerlukan salah satu nilai input int berikut.
Nilai | Deskripsi |
---|---|
0x0001 | SET KUNCI |
0x0002 | DINAMIS |
0x0004 | FORWARD_ONLY |
0x0008 | STATIS |
0x10 | FAST_FORWARD |
0x1000 | PARAMETERIZED_STMT |
0x2000 | AUTO_FETCH |
0x4000 | AUTO_CLOSE |
0x8000 | CHECK_ACCEPTED_TYPES |
0x10000 | KEYSET_ACCEPTABLE |
0x20000 | DYNAMIC_ACCEPTABLE |
0x40000 | FORWARD_ONLY_ACCEPTABLE |
0x80000 | STATIC_ACCEPTABLE |
0x100000 | FAST_FORWARD_ACCEPTABLE |
Karena nilai yang diminta mungkin tidak sesuai untuk kursor yang ditentukan oleh stmt, parameter ini berfungsi sebagai input dan output. Dalam kasus seperti itu, SQL Server menetapkan nilai yang sesuai.
ccopt
Opsi kontrol konkurensi. ccopt adalah parameter opsional yang memerlukan salah satu nilai input int berikut.
Nilai | Deskripsi |
---|---|
0x0001 | READ_ONLY |
0x0002 | SCROLL_LOCKS (sebelumnya dikenal sebagai LOCKCC) |
0x0004 | OPTIMIS (sebelumnya dikenal sebagai OPTCC) |
0x0008 | OPTIMIS (sebelumnya dikenal sebagai OPTCCVAL) |
0x2000 | ALLOW_DIRECT |
0x4000 | UPDT_IN_PLACE |
0x8000 | CHECK_ACCEPTED_OPTS |
0x10000 | READ_ONLY_ACCEPTABLE |
0x20000 | SCROLL_LOCKS_ACCEPTABLE |
0x40000 | OPTIMISTIC_ACCEPTABLE |
0x80000 | OPTIMISITC_ACCEPTABLE |
Seperti halnya menggulir, SQL Server dapat menetapkan nilai yang berbeda dari yang diminta.
Keterangan
Parameter status RPC adalah salah satu hal berikut:
Nilai | Deskripsi |
---|---|
0 | Berhasil |
0x0001 | Kegagalan |
1FF6 | Tidak dapat mengembalikan metadata. Catatan: Alasan untuk ini adalah bahwa pernyataan tidak menghasilkan tataan hasil; misalnya, ini adalah pernyataan INSERT atau DDL. |
Contoh
Berikut ini adalah contoh penggunaan sp_cursorprepare dan sp_cursorexecute
declare @handle int , @p5 int, @p6 int
exec sp_cursorprepare @handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 output,
@p6 output
declare @p1 int
set @P1 = @handle
declare @p2 int
declare @p3 int
declare @p4 int
set @P6 = 4
exec sp_cursorexecute @p1, @p2 OUTPUT, @p3 output , @p4 output, @p5 OUTPUT, @p6
exec sp_cursorfetch @P2
exec sp_cursorunprepare @handle
exec sp_cursorclose @p2
Ketika stmt diparameterkan dan nilai PARAMETERIZED_STMT scrollopt aktif, format string adalah sebagai berikut:
{ <local variable name>**<data type> } [ ,...n ]
Lihat Juga
sp_cursorexecute (T-SQL)
sp_cursoropen (T-SQL)
sp_cursorunprepare (T-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk