sp_prepare (Transact SQL)
Aplica-se a:SQL ServerInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)
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 de fluxo de dados tabular (TDS).
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 obrigató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âmetros 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 é obrigatório e chama um valor de entrada ntext, ncar ou nvarchar .
options
Um parâmetro opcional que retorna uma descrição das colunas do conjunto de resultados de cursor. opções 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 a executa posteriormente 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
Este é 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
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de