sp_cursorprepare (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate)

Compila il batch o l'istruzione del cursore in un piano di esecuzione, ma non crea il cursore. L'istruzione compilata può essere utilizzata in un secondo momento da sp_cursorexecute. Questa procedura, abbinata a sp_cursorexecute, ha la stessa funzione di sp_cursoropen, ma è suddivisa in due fasi. sp_cursorprepare viene richiamato specificando ID = 3 in un pacchetto di flusso di dati tabulari (TDS).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

  
sp_cursorprepare prepared_handle OUTPUT, params , stmt , options  
    [ , scrollopt[ , ccopt]]  

Argomenti

prepared_handle
Identificatore SQL Server handle preparato generato dall'utente che restituisce un valore intero.

Nota

prepared_handle viene successivamente fornito a una sp_cursorexecute per aprire un cursore. Dopo essere stato creato, un handle esiste fino a quando non si esegue la disconnessione o fino a quando non viene rimosso in modo esplicito tramite la routine sp_cursorunprepare.

params
Identifica le istruzioni con parametri. La definizione params delle variabili viene sostituita con i marcatori di parametro nell'istruzione . params è un parametro obbligatorio che chiama per un valore di input ntext, nchar o nvarchar. Immettere un valore NULL se l'istruzione non è con parametri.

Nota

Usare una stringa ntext come valore di input quando stmt è con parametri e il valore PARAMETERIZED_STMT scrollopt è ON.

Stmt
Definisce il set di risultati del cursore. Il parametro stmt è obbligatorio e chiama per un valore di input ntext, nchar o nvarchar.

Nota

Le regole per specificare il valore stmt sono le stesse di quelle per sp_cursoropen, ad eccezione del fatto che il tipo di dati stringa stmt deve essere ntext.

options
Parametro facoltativo tramite cui viene restituita una descrizione delle colonne dei set di risultati del cursore. Options richiede il valore di input int seguente.

Valore Descrizione
0x0001 RETURN_METADATA

scrollopt
Opzione di scorrimento. scrollopt è un parametro facoltativo che richiede uno dei valori di input int seguenti.

Valore Descrizione
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

Poiché il valore richiesto potrebbe non essere appropriato per il cursore definito da stmt, questo parametro funge sia da input che da output. In questi casi, SQL Server assegna un valore appropriato.

ccopt
Opzioni del controllo della concorrenza. ccopt è un parametro facoltativo che richiede uno dei valori di input int seguenti.

Valore Descrizione
0x0001 READ_ONLY
0x0002 SCROLL_LOCKS (precedentemente noto come LOCKCC)
0x0004 OPTIMISTIC (noto in precedenza come OPTCC)
0x0008 OPTIMISTIC (precedentemente noto come 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

Come con scrollpt, SQL Server può assegnare un valore diverso da quello richiesto.

Commenti

Il parametro di stato RPC è uno degli elementi seguenti:

Valore Descrizione
0 Operazione completata
0x0001 Operazioni non riuscite
1FF6 Non è stato possibile restituire metadati.

Nota: il motivo è che l'istruzione non produce un set di risultati. ad esempio un'istruzione INSERT o DDL.

Esempio

Di seguito è riportato un esempio di uso di sp_cursorprepare e 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

Quando stmt è con parametri e il valore PARAMETERIZED_STMT scrollopt è ON, il formato della stringa è il seguente:

{ <local variable name>**<data type> } [ ,... n ]

Vedere anche

sp_cursorexecute (Transact-SQL)
sp_cursoropen (Transact-SQL)
sp_cursorunprepare (Transact-SQL)
Stored procedure di sistema (Transact-SQL)