Condividi tramite


sp_cursorprepexec (Transact-SQL)

Si applica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema 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;