Delen via


sp_prepare (Transact SQL)

Van toepassing op:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)

Bereidt een geparametriseerde Transact-SQL-instructie voor en geeft een statementhandle terug voor uitvoering. sp_prepare wordt aangeroepen door te specificeren ID = 11 in een tabular data stream (TDS)-pakket.

Transact-SQL syntaxis-conventies

Syntaxis

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

Arguments

handvat

Een door SQL Server gegenereerde voorbereide handle-identificatie . handle is een vereiste parameter met een int-returnwaarde.

params

Identificeert geparameteriseerde instructies. params is een vereiste OUTPUT-parameter die vraagt om een ntext-, nchar- of nvarchar-invoerwaarde . De parameters definitie van variabelen wordt vervangen door parametermarkeringen in de instructie. Voer een NULL waarde in als de instructie niet geparametriseerd is.

STMT

Hiermee definieert u de resultatenset van de cursor. De stmt-parameter is vereist en vereist een ntext-, nchar- of nvarchar-invoerwaarde .

Opties

Een optionele parameter die een beschrijving van de kolommen van de cursorresultatenset retourneert. Options vereist de volgende invoerwaarde:

Waarde Description
0x0001 RETURN_METADATA

Voorbeelden

Eén. Bereid een statement voor en voer het uit

Het volgende voorbeeld bereidt een basis-Transact-SQL-instructie voor en voert deze uit.

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. Bereid een instructie voor en voer deze uit met behulp van de handle

Het volgende voorbeeld bereidt een instructie voor in de AdventureWorks2025 database en voert deze later uit met behulp van de 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

Hier is het resultatenoverzicht.

1

Voer de query twee keer uit met de handlewaarde 1, voordat het voorbereide plan wordt verworpen.

EXECUTE sp_execute 1, 49879;
GO

EXECUTE sp_execute 1, 48766;
GO

EXECUTE sp_unprepare 1;
GO