Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 , memiliki fungsi yang sama dengan sp_cursorexecutesp_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
Penting
Argumen untuk prosedur tersimpan yang diperluas harus dimasukkan dalam urutan tertentu seperti yang dijelaskan di bagian Sintaks. Jika parameter dimasukkan di luar urutan, pesan kesalahan terjadi.
prepared_handle
Pengidentifikasi yang disiapkan handle yang dihasilkan SQL Server yang mengembalikan nilai int .
prepared_handle kemudian disediakan ke sp_cursorexecute prosedur untuk membuka kursor. Setelah handel dibuat, handel tersebut ada sampai Anda keluar, atau sampai Anda secara eksplisit menghapusnya melalui sp_cursorunprepare prosedur.
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 .
NULL Masukkan nilai jika pernyataan tidak diparameterkan.
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 .
Aturan untuk menentukan nilai stmt sama sp_cursoropendengan , dengan pengecualian bahwa jenis data string stmt harus ntext.
opsi
Mengembalikan deskripsi kolom kumpulan hasil kursor. Parameter opsi adalah int, dengan default NULL. Ketika diatur ke 0x0001, itu berarti RETURN_METADATA.
scrollopt
Opsi gulir. Parameter scrollopt adalah parameter opsional yang memerlukan salah satu nilai input int berikut.
| Nilai | Deskripsi |
|---|---|
0x0001 |
KEYSET |
0x0002 |
DYNAMIC |
0x0004 |
FORWARD_ONLY |
0x0008 |
STATIC |
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 |
OPTIMISTIC (sebelumnya dikenal sebagai OPTCC) |
0x0008 |
OPTIMISTIC (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 |
OPTIMISTIC_ACCEPTABLE |
Seperti halnya menggulir, SQL Server dapat menetapkan nilai yang berbeda dari yang diminta.
Keterangan
Parameter status RPC adalah salah satu nilai berikut:
| Nilai | Deskripsi |
|---|---|
0 |
Berhasil |
0x0001 |
Kegagalan |
1FF6 |
Tidak dapat mengembalikan metadata. Catatan: Alasan untuk ini adalah bahwa pernyataan tidak menghasilkan tataan hasil; misalnya, itu adalah INSERT pernyataan atau DDL. |
Contoh
Kode berikut adalah contoh penggunaan sp_cursorprepare dan sp_cursorexecute:
DECLARE @handle AS INT, @p5 AS INT, @p6 AS INT;
EXECUTE sp_cursorprepare
@handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 OUTPUT,
@p6 OUTPUT;
DECLARE @p1 AS INT;
SET @P1 = @handle;
DECLARE @p2 AS INT;
DECLARE @p3 AS INT;
DECLARE @p4 AS INT;
SET @P6 = 4;
EXECUTE sp_cursorexecute
@p1,
@p2 OUTPUT,
@p3 OUTPUT,
@p4 OUTPUT,
@p5 OUTPUT,
@p6;
EXECUTE sp_cursorfetch @P2;
EXECUTE sp_cursorunprepare @handle;
EXECUTE sp_cursorclose @p2;
Ketika stmt diparameterkan dan nilai scrolloptPARAMETERIZED_STMT adalah ON, format string dalam bentuk berikut:
<parameter_name> <data_type> [ ,... n ]