sp_prepare(Transact SQL)
적용 대상: SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
매개 변수가 있는 Transact-SQL 문을 준비하고 실행을 위한 문 핸들 을 반환합니다. sp_prepare
는 TDS(테이블 형식 데이터 스트림) 패킷을 지정하여 ID = 11
호출됩니다.
구문
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