Bagikan melalui


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).

Konvensi sintaks transact-SQL

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)