sp_cursorprepexec (T-SQL)
Berlaku untuk: SQL Server
Azure SQL Database
Azure Synapse Analytics Analytics
Platform System (PDW)
Mengkompilasi paket untuk pernyataan kursor atau batch yang dikirimkan, lalu membuat dan mengisi kursor. sp_cursorprepexec
menggabungkan fungsi dan sp_cursorprepare
sp_cursorexecute
. Prosedur ini dipanggil dengan menentukan ID = 5
dalam paket aliran data tabular (TDS).
Sintaks
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
Argumen
handel yang disiapkan
SQL Server menghasilkan pengidentifikasi handel yang disiapkan. handel yang disiapkan diperlukan dan mengembalikan int.
Kursor
Pengidentifikasi kursor yang dihasilkan SQL Server. kursor adalah parameter yang diperlukan yang harus disediakan pada semua prosedur berikutnya yang bertindak berdasarkan kursor ini, misalnya, sp_cursorfetch
.
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 .
Catatan
Gunakan string ntext sebagai nilai input saat pernyataan diparameterkan dan nilai PARAMETERIZED_STMT scrollopt AKTIF.
statement
Menentukan kumpulan hasil kursor. Parameter pernyataan diperlukan dan memanggil nilai input ntext, nchar, atau nvarchar .
Catatan
Aturan untuk menentukan nilai pernyataan sama dengan yang untuk sp_cursoropen
, dengan pengecualian bahwa jenis data string pernyataan 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 kemungkinan bahwa opsi yang diminta tidak sesuai untuk kursor yang ditentukan oleh pernyataan, parameter ini berfungsi sebagai input dan output. Dalam kasus seperti itu, SQL Server menetapkan jenis yang sesuai dan memodifikasi nilai ini.
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 scrollopt, SQL Server dapat menetapkan nilai yang berbeda dari yang diminta.
rowcount
Parameter opsional yang menandakan jumlah baris buffer pengambilan untuk digunakan dengan AUTO_FETCH. Defaultnya adalah 20 baris. rowcount bertingkah berbeda saat ditetapkan sebagai nilai input versus nilai pengembalian.
Sebagai nilai input | Sebagai nilai yang dikembalikan |
---|---|
Ketika AUTO_FETCH ditentukan dengan FAST_FORWARD kursor rowcount mewakili jumlah baris yang akan ditempatkan ke dalam buffer pengambilan. | Mewakili jumlah baris dalam tataan hasil. Saat nilai AUTO_FETCH scrollopt ditentukan, rowcount mengembalikan jumlah baris yang diambil ke dalam buffer pengambilan. |
parameter_name
Menunjuk satu atau beberapa nama parameter seperti yang didefinisikan dalam argumen params . Harus ada parameter yang disediakan untuk setiap parameter yang disertakan dalam param. Argumen ini tidak diperlukan ketika pernyataan Transact-SQL atau batch dalam param tidak memiliki parameter yang ditentukan.
Mengembalikan nilai kode
Jika param mengembalikan nilai NULL, maka pernyataan tidak diparameterkan.
Contoh
Contoh ini menunjukkan penggunaan sp_cursorprepexec
. Ini menjalankan kueri terhadap Person
tabel dalam database yang AdventureWorks2022
mengembalikan semua rekaman di mana nama depan adalah "Katherine".
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXEC sp_cursorprepexec
@prep_handle OUTPUT,
@cursor OUTPUT,
N'@fName nvarchar(100)',
N'SELECT FirstName, LastName FROM Person.Person WHERE FirstName = @fName',
@scrollopt,
@ccopt,
@rowcnt OUTPUT,
'Katherine';
EXEC sp_cursorfetch @cursor;