Partilhar via


sp_prepare (Transact SQL)

Aplica-se a:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsSistema 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