Sdílet prostřednictvím


sp_prepare (Transact SQL)

Platí na:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformový systém (PDW)

Připraví parametrizovaný Transact-SQL příkaz a vrátí handle příkazu k vykonání. sp_prepare je vyvolán zadáním ID = 11 v tabulárním datovém toku (TDS) paketu.

Transact-SQL konvence syntaxe

Syntaxe

sp_prepare
    handle OUTPUT
    , params
    , stmt
    , options
[ ; ]

Arguments

klika

Identifikátor připraveného handle vytvořený SQL Serverem. handle je povinný parametr s vrácenou hodnotou int .

params

Identifikuje parametrizované příkazy. params je povinný VÝSTUPNÍ parametr, který vyžaduje vstupní hodnotu ntext, nchar nebo nvarchar . parametry definice proměnných se v příkazu nahradí značkami parametrů. Zadejte hodnotu NULL , pokud příkaz není parametrizován.

STMT

Definuje sadu výsledků kurzoru. Parametr stmt je vyžadován a vyžaduje vstupní hodnotu ntext, nchar nebo nvarchar .

volby

Volitelný parametr, který vrátí popis sloupců sady výsledků kurzoru. Opce vyžadují následující vstupní hodnotu:

Hodnota Description
0x0001 RETURN_METADATA

Examples

A. Připravte a provedete prohlášení

Následující příklad připravuje a vykonává základní Transact-SQL příkaz.

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. Připravte a provedete příkaz pomocí handle

Následující příklad připravuje příkaz v databázi AdventureWorks2025 a později jej vykoná pomocí rukojeti.

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

Tady je soubor výsledků.

1

Dotaz proveďte dvakrát s hodnotou 1handle , než připravený plán zahodíte.

EXECUTE sp_execute 1, 49879;
GO

EXECUTE sp_execute 1, 48766;
GO

EXECUTE sp_unprepare 1;
GO