Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Compila l'istruzione cursore o il batch in un piano di esecuzione, ma non crea il cursore. L'istruzione compilata può essere usata 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 relative alla sintassi Transact-SQL
Sintassi
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argomenti
Importante
Gli argomenti per le stored procedure estese devono essere immessi nell'ordine specifico, come descritto nella sezione Sintassi. Se i parametri vengono immessi in ordine non corretto, si verifica un messaggio di errore.
prepared_handle
Identificatore preparato handle generato da SQL Server che restituisce un valore int .
prepared_handle viene quindi fornito a una sp_cursorexecute routine per aprire un cursore. Dopo aver creato un handle, esiste fino a quando non si disconnette o fino a quando non viene rimosso in modo esplicito tramite una sp_cursorunprepare procedura.
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 NULL valore se l'istruzione non è parametrizzata.
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 .
Le regole per specificare il valore stmt sono uguali sp_cursoropena , con l'eccezione che il tipo di dati stringa stmt deve essere ntext.
options
Restituisce una descrizione delle colonne del set di risultati del cursore. Il parametro options è int, con un valore predefinito .NULL Se impostato su 0x0001, significa RETURN_METADATA.
scrollopt
Opzione di scorrimento. Il parametro 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 (noto in precedenza come LOCKCC) |
0x0004 |
OPTIMISTIC (noto in precedenza come OPTCC) |
0x0008 |
OPTIMISTIC (noto in precedenza 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 |
OPTIMISTIC_ACCEPTABLE |
Come per scrollpt, SQL Server può assegnare un valore diverso da quello richiesto.
Osservazioni:
Il parametro di stato RPC è uno dei valori seguenti:
| valore | Descrizione |
|---|---|
0 |
Riuscita |
0x0001 |
Errore |
1FF6 |
Non è stato possibile restituire i metadati. Nota: il motivo è che l'istruzione non produce un set di risultati, ad esempio un'istruzione INSERT O DDL. |
Esempi
Il codice seguente è un esempio di utilizzo sp_cursorprepare di e sp_cursorexecute:
DECLARE @handle AS INT, @p5 AS INT, @p6 AS INT;
EXECUTE sp_cursorprepare
@handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 OUTPUT,
@p6 OUTPUT;
DECLARE @p1 AS INT;
SET @P1 = @handle;
DECLARE @p2 AS INT;
DECLARE @p3 AS INT;
DECLARE @p4 AS INT;
SET @P6 = 4;
EXECUTE sp_cursorexecute
@p1,
@p2 OUTPUT,
@p3 OUTPUT,
@p4 OUTPUT,
@p5 OUTPUT,
@p6;
EXECUTE sp_cursorfetch @P2;
EXECUTE sp_cursorunprepare @handle;
EXECUTE sp_cursorclose @p2;
Quando stmt viene parametrizzato e il valore scrolloptPARAMETERIZED_STMT è ON, il formato della stringa è nel formato seguente:
<parameter_name> <data_type> [ ,... n ]