sp_cursorprepexec (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
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
handle preparato
Identificatore di handle preparato generato da SQL Server. handle preparato è obbligatorio e restituisce int.
cursor
Identificatore del cursore generato da SQL Server. 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 . params è un parametro obbligatorio che chiama per 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 quelle per sp_cursoropen
, ad eccezione del fatto che il tipo di dati stringa dell'istruzione 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 |
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. 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 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. 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 di scrollopt AUTO_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 nell'argomento params . È necessario specificare un parametro per ogni parametro incluso nei parametri. Questo argomento non è obbligatorio quando l'istruzione Transact-SQL o il batch in params non ha parametri definiti.
Valori del codice restituito
Se params restituisce un NULL
valore, l'istruzione non viene parametrizzata.
Esempi
In questo esempio viene illustrato l'uso di sp_cursorprepexec
. Esegue una query sulla Person
tabella nel AdventureWorks2022
database che restituisce tutti i record in cui il nome è "Katherine".
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXEC 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,
'Katherine';
EXEC sp_cursorfetch @cursor;