Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Prepara uma instrução Transact-SQL parametrizada e devolve um handle de instrução para execução.
sp_prepare é invocado especificando ID = 11 num pacote de fluxo de dados tabulares (TDS).
Transact-SQL convenções de sintaxe
Sintaxe
sp_prepare
handle OUTPUT
, params
, stmt
, options
[ ; ]
Arguments
Pega
Um identificador de handle preparado gerado pelo SQL Server. handle é um parâmetro obrigatório com um valor de retorno int .
params
Identifica instruções parametrizadas.
params é um parâmetro OUTPUT obrigatório que exige um valor de entrada ntext, nchar ou nvarchar . A definição de parâmetros de variáveis é substituída por marcadores de parâmetros na declaração. Introduza 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 exige um valor de entrada ntext, nchar ou nvarchar .
Opções
Um parâmetro opcional que retorna uma descrição das colunas do conjunto de resultados do cursor. Opções requer o seguinte valor de entrada:
| Valor | Description |
|---|---|
0x0001 |
RETURN_METADATA |
Examples
A. Preparar e executar uma declaração
O exemplo seguinte prepara e executa uma instrução básica 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. Prepare e execute uma instrução usando o handle
O exemplo seguinte prepara uma instrução na AdventureWorks2025 base de dados e, posteriormente, executa-a usando o handle.
-- 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
Aqui está o conjunto de resultados.
1
Execute a consulta duas vezes usando o valor 1do handle , antes de descartar o plano preparado.
EXECUTE sp_execute 1, 49879;
GO
EXECUTE sp_execute 1, 48766;
GO
EXECUTE sp_unprepare 1;
GO