Condividi tramite


sp_prepare (Transact SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

Prepara un'istruzione Transact-SQL con parametri e restituisce un handle di istruzione per l'esecuzione. sp_prepare viene richiamato specificando ID = 11 in un pacchetto TDS (Tabular Data Stream).

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_prepare
    handle OUTPUT
    , params
    , stmt
    , options
[ ; ]

Argomenti

handle

Identificatore di handle preparato generato da SQL Server. handle è un parametro obbligatorio con un valore restituito int .

params

Identifica le istruzioni con parametri. params è un parametro OUTPUT obbligatorio che chiama per un valore di input ntext, nchar o nvarchar . La definizione di parametri delle variabili viene sostituita dai marcatori di parametro nell'istruzione . Immettere un NULL valore se l'istruzione non è parametrizzata.

stmt

Definisce il set di risultati del cursore. Il parametro stmt è obbligatorio e chiama un valore di input ntext, nchar o nvarchar .

options

Parametro facoltativo tramite cui viene restituita una descrizione delle colonne dei set di risultati del cursore. le opzioni richiedono il valore di input seguente:

valore Descrizione
0x0001 RETURN_METADATA

Esempi

R. Preparare ed eseguire un'istruzione

Nell'esempio seguente viene preparata ed eseguita un'istruzione Transact-SQL di base.

DECLARE @handle INT;

EXEC sp_prepare @handle OUTPUT,
    N'@P1 NVARCHAR(128), @P2 NVARCHAR(100)',
    N'SELECT database_id, name FROM sys.databases WHERE name=@P1 AND state_desc = @P2';

EXEC sp_execute @handle,
    N'tempdb',
    N'ONLINE';

EXEC sp_unprepare @handle;

B. Preparare ed eseguire un'istruzione usando l'handle

Nell'esempio seguente viene preparata un'istruzione nel AdventureWorks2022 database e successivamente viene eseguita usando l'handle .

-- Prepare query
DECLARE @handle INT;

EXEC sp_prepare @handle OUTPUT,
    N'@Param INT',
    N'SELECT *
FROM Sales.SalesOrderDetail AS sod
INNER JOIN Production.Product AS p ON sod.ProductID = p.ProductID
WHERE SalesOrderID = @Param
ORDER BY Style DESC;';

-- Return handle for calling application
SELECT @handle;
GO

Il set di risultati è il seguente.

1

Eseguire la query due volte usando il valore 1handle , prima di eliminare il piano preparato.

EXEC sp_execute 1, 49879;
GO

EXEC sp_execute 1, 48766;
GO

EXEC sp_unprepare 1;
GO