sp_prepare (Transact SQL)
Se aplica a: SQL Server Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)
Prepara una instrucción Transact-SQL con parámetros y devuelve un identificador de instrucción para su ejecución. sp_prepare
se invoca especificando ID = 11
en un paquete de flujo de datos tabular (TDS).
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_prepare
handle OUTPUT
, params
, stmt
, options
[ ; ]
Argumentos
identificador
Identificador de identificador preparado generado por SQL Server. handle es un parámetro necesario con un valor devuelto int .
params
Identifica instrucciones con parámetros. los parámetros son un parámetro OUTPUT necesario que llama a un valor de entrada ntext, nchar o nvarchar . La definición de parámetros de las variables se sustituye por los marcadores de parámetro en la instrucción . Escriba un NULL
valor si la instrucción no está parametrizada.
stmt
Define el conjunto de resultados del cursor. El parámetro stmt es obligatorio y llama a para un valor de entrada ntext, nchar o nvarchar .
options
Parámetro opcional que devuelve una descripción de las columnas del conjunto de resultados del cursor. las opciones requieren el siguiente valor de entrada:
Valor | Descripción |
---|---|
0x0001 |
RETURN_METADATA |
Ejemplos
A Preparación y ejecución de una instrucción
En el ejemplo siguiente se prepara y ejecuta una instrucción básica de Transact-SQL.
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. Preparación y ejecución de una instrucción mediante el identificador
En el ejemplo siguiente se prepara una instrucción en la AdventureWorks2022
base de datos y, posteriormente, se ejecuta mediante el identificador .
-- 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
Este es el conjunto de resultados.
1
Ejecute la consulta dos veces con el valor 1
de identificador , antes de descartar el plan preparado.
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO