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
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema di Piattaforma Analitica (PDW)
Database SQL in Microsoft Fabric
Compila un piano per il batch o l'istruzione di cursore inviata, quindi crea e popola il cursore.
sp_cursorprepexec combina le funzioni di sp_cursorprepare e sp_cursorexecute. Questa procedura viene richiamata specificando ID = 5 in un pacchetto TDS (Tabular Data Stream).
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
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.
handle preparato
Identificatore di handle preparato generato da SQL Server. Il parametro handle preparato è obbligatorio e restituisce int.
cursor
Identificatore del cursore generato da SQL Server. Il parametro cursor è un parametro obbligatorio che deve essere fornito in tutte le procedure successive che agiscono su questo cursore, ad esempio sp_cursorfetch.
params
Identifica le istruzioni con parametri. La definizione di parametri delle variabili viene sostituita dai marcatori di parametro nell'istruzione . Il parametro params è obbligatorio. Se specificato, i parametri chiamano un valore di input ntext, nchar o nvarchar .
Nota
Usare una stringa ntext come valore di input quando l'istruzione viene parametrizzata e il valore scrollopt PARAMETERIZED_STMT è ON.
statement
Definisce il set di risultati del cursore. Il parametro di istruzione è obbligatorio e chiama un valore di input ntext, nchar o nvarchar .
Nota
Le regole per specificare il valore dell'istruzione sono uguali a sp_cursoropen, ad eccezione del fatto che il tipo di dati della stringa di istruzione deve essere ntext.
options
Parametro facoltativo tramite cui viene restituita una descrizione delle colonne dei set di risultati del cursore. Il parametro options richiede il valore di input int seguente.
| valore | Descrizione |
|---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Opzione di scorrimento. Il parametro scrollopt è facoltativo . Se specificato, scrollopt 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 |
A causa della possibilità che l'opzione richiesta non sia appropriata per il cursore definito dall'istruzione , questo parametro funge sia da input che da output. In questi casi, SQL Server assegna un tipo appropriato e modifica questo valore.
ccopt
Opzioni del controllo della concorrenza. Il parametro ccopt è facoltativo. Se specificato, il parametro ccopt 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 scrollopt, SQL Server può assegnare un valore diverso da quello richiesto.
conteggio righe
Parametro facoltativo che indica il numero di righe del buffer di recupero da usare con AUTO_FETCH. Il valore predefinito è 20 righe. Il parametro rowcount si comporta in modo diverso quando assegnato come valore di input rispetto a un valore restituito.
| Come valore di input | Come valore restituito |
|---|---|
| Quando AUTO_FETCH viene specificato con il conteggio delle righe FAST_FORWARD cursori rappresenta il numero di righe da inserire nel buffer di recupero. | Rappresenta il numero di righe nel set di risultati. Quando si specifica il valore scrolloptAUTO_FETCH , il conteggio delle righe restituisce il numero di righe recuperate nel buffer di recupero. |
parameter_name
Definisce uno o più nomi di parametro come definito nel parametro params . È necessario specificare un parametro per ogni parametro incluso nei parametri. Questo parametro non è obbligatorio quando l'istruzione Transact-SQL o il batch in params non ha parametri definiti.
Valori del codice restituito
Se il valore params restituisce NULL, l'istruzione non viene parametrizzata.
Esempi
In questo esempio viene illustrato l'uso di sp_cursorprepexec. Esegue una query sulla Person tabella nel AdventureWorks2025 database che restituisce tutti i record in cui il nome è "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;