sp_prepare (Transact SQL)
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Prepara uma instrução Transact-SQL parametrizada e retorna um identificador de instrução para execução. sp_prepare
é invocado especificando ID = 11
em um pacote TDS (fluxo de dados tabulares).
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_prepare
handle OUTPUT
, params
, stmt
, options
[ ; ]
Argumentos
handle
Um identificador de identificador preparado gerado pelo SQL Server. handle é um parâmetro necessário com um valor de retorno int .
params
Identifica instruções parametrizadas. params é um parâmetro OUTPUT necessário que chama um valor de entrada ntext, nchar ou nvarchar . A definição de parâmetros de variáveis é substituída por marcadores de parâmetro na instrução. Insira um NULL
valor se a instrução não estiver parametrizada.
stmt
Define o conjunto de resultados do cursor. O parâmetro stmt é necessário e chama um valor de entrada ntext, nchar ou nvarchar .
options
Um parâmetro opcional que retorna uma descrição das colunas do conjunto de resultados de cursor. options requer o seguinte valor de entrada:
Valor | Descrição |
---|---|
0x0001 |
RETURN_METADATA |
Exemplos
R. Preparar e executar uma instrução
O exemplo a seguir prepara e executa uma instrução Transact-SQL básica.
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. Preparar e executar uma instrução usando o identificador
O exemplo a seguir prepara uma instrução no AdventureWorks2022
banco de dados e, posteriormente, a executa usando o 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
Veja a seguir o conjunto de resultados.
1
Execute a consulta duas vezes usando o valor 1
do identificador , antes de descartar o plano preparado.
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO