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 1do identificador , antes de descartar o plano preparado.

EXEC sp_execute 1, 49879;
GO

EXEC sp_execute 1, 48766;
GO

EXEC sp_unprepare 1;
GO