sp_cursorprepare (Transact-SQL)
Si applica a:SQL Server
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, associata 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 TDS (Tabular Data Stream).
Convenzioni di sintassi Transact-SQL
Sintassi
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argomenti
prepared_handle
Identificatore di handle preparato generato da SQL Server che restituisce un valore intero.
Nota
prepared_handle viene successivamente fornito a una routine 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 di parametri delle variabili viene sostituita dai 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 viene parametrizzato e il valore di scrollopt PARAMETERIZED_STMT è ON.
Stmt
Definisce il set di risultati del cursore. Il parametro stmt è obbligatorio e chiama un valore di input ntext, nchar o nvarchar .
Nota
Le regole per specificare il valore stmt sono uguali a 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. le opzioni richiedono 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 per scrollpt, SQL Server può assegnare un valore diverso da quello richiesto.
Osservazioni:
Il parametro di stato RPC è uno degli elementi seguenti:
Valore | Descrizione |
---|---|
0 | Riuscita |
0x0001 | Errore |
1FF6 | Non è stato possibile restituire metadati. Nota: il motivo è che l'istruzione non produce un set di risultati; Ad esempio, si tratta di un'istruzione INSERT o DDL. |
Esempi
Di seguito è riportato un esempio di utilizzo 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 viene parametrizzato e il valore scrollopt PARAMETERIZED_STMT è ON, il formato della stringa è il seguente:
{ <local variable name>**<data type> } [ ,...n ]
Vedi anche
sp_cursorexecute (Transact-SQL)
sp_cursoropen (Transact-SQL)
sp_cursorunprepare (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per