Compartilhar via


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 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