다음을 통해 공유


sp_prepare(Transact SQL)

적용 대상: SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

매개 변수가 있는 Transact-SQL 문을 준비하고 실행을 위한 문 핸들 을 반환합니다. sp_prepare 는 TDS(테이블 형식 데이터 스트림) 패킷을 지정하여 ID = 11 호출됩니다.

Transact-SQL 구문 표기 규칙

구문

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

인수

handle

SQL Server에서 생성된 준비된 핸들 식별자입니다. handle은 int 반환 값이 있는 필수 매개 변수입니다.

params

매개 변수가 있는 문을 식별합니다. params는 ntext, nchar 또는 nvarchar 입력 값을 호출하는 필수 OUTPUT 매개 변수입니다. 변수의 매개 변수 정의는 문의 매개 변수 표식으로 대체됩니다. NULL 문이 매개 변수화되지 않은 경우 값을 입력합니다.

stmt

커서 결과 집합을 정의합니다. stmt 매개 변수가 필요하며 ntext, nchar 또는 nvarchar 입력 값을 호출합니다.

options

커서 결과 집합 열의 설명을 반환하는 선택적 매개 변수입니다. 옵션을 사용하려면 다음 입력 값이 필요합니다.

설명
0x0001 RETURN_METADATA

예제

A. 문 준비 및 실행

다음 예제에서는 기본 Transact-SQL 문을 준비하고 실행합니다.

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. 핸들을 사용하여 문 준비 및 실행

다음 예제에서는 데이터베이스에서 AdventureWorks2022 문을 준비하고 나중에 핸들을 사용하여 실행합니다.

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

결과 집합은 다음과 같습니다.

1

준비된 계획을 삭제하기 전에 핸들 값을 1사용하여 쿼리를 두 번 실행합니다.

EXEC sp_execute 1, 49879;
GO

EXEC sp_execute 1, 48766;
GO

EXEC sp_unprepare 1;
GO