Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 AS INT;
EXECUTE 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';
EXECUTE sp_execute
@handle,
N'tempdb', N'ONLINE';
EXECUTE 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 AS INT;
EXECUTE 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.
EXECUTE sp_execute 1, 49879;
GO
EXECUTE sp_execute 1, 48766;
GO
EXECUTE sp_unprepare 1;
GO