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 1
handle , prima di eliminare il piano preparato.
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO