Bagikan melalui


sp_cursorprepexec (T-SQL)

Berlaku untuk:SQL ServerDatabase Azure SQLInstans Terkelola Azure SQLAzure Synapse AnalyticsSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

Mengkompilasi paket untuk pernyataan kursor atau batch yang dikirimkan, lalu membuat dan mengisi kursor. sp_cursorprepexec menggabungkan fungsi dan sp_cursorpreparesp_cursorexecute. Prosedur ini dipanggil dengan menentukan ID = 5 dalam paket aliran data tabular (TDS).

Konvensi sintaks transact-SQL

Sintaks

sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
    [ , scrollopt [ , ccopt [ , rowcount ] ] ]
    [ , '@parameter_name [ , ...n ]' ]

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.

handel yang disiapkan

SQL Server menghasilkan pengidentifikasi handel yang disiapkan. Parameter handel yang disiapkan diperlukan dan mengembalikan int.

Kursor

Pengidentifikasi kursor yang dihasilkan SQL Server. Parameter 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. Parameter param diperlukan . Ketika ditentukan, param 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 sp_cursoropen, dengan pengecualian bahwa jenis data string pernyataan harus ntext.

opsi

Parameter opsional yang mengembalikan deskripsi kolom kumpulan hasil kursor. Parameter opsi memerlukan nilai input int berikut.

Nilai Deskripsi
0x0001 RETURN_METADATA

scrollopt

Opsi gulir. Parameter scrollopt bersifat opsional. Saat ditentukan, scrollopt 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. Parameter ccopt bersifat opsional. Jika ditentukan, parameter ccopt 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. Parameter 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 scrolloptAUTO_FETCH ditentukan, rowcount mengembalikan jumlah baris yang diambil ke dalam buffer pengambilan.

parameter_name

Menunjuk satu atau beberapa nama parameter seperti yang didefinisikan dalam parameter param . Harus ada parameter yang disediakan untuk setiap parameter yang disertakan dalam param. Parameter ini tidak diperlukan ketika pernyataan Transact-SQL atau batch dalam param tidak memiliki parameter yang ditentukan.

Mengembalikan nilai kode

Jika nilai paramsNULLmengembalikan , pernyataan tidak diparameterkan.

Contoh

Contoh ini menunjukkan penggunaan sp_cursorprepexec. Ini menjalankan kueri terhadap Person tabel dalam database yang AdventureWorks2025 mengembalikan semua rekaman di mana nama depan adalah "Kirby".

USE AdventureWorks2022;
GO

DECLARE @prep_handle INT,
    @cursor INT,
    @scrollopt INT = 4104,
    @ccopt INT = 8193,
    @rowcnt INT;

EXECUTE 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,
    'Kirby';

EXECUTE sp_cursorfetch @cursor;