프로그래밍/MSSQL
[MSSQL] sp_executesql 사용 (EXECUTE sp_executesql vs EXEC)
초보개발자꽁쥐
2017. 11. 30. 15:27
반응형
효율적인 동적쿼리 실행을 위해 sp_executesql 저장 프로시저를 사용해보자
sp_executesql
- sp_executesql 저장 프로시저는 매개 변수 대체를 지원하기 때문에 EXECUTE보다 융통성이 뛰어나다.
- sp_executesql은 SQL Server에서 재사용이 쉬운 실행 계획을 생성하므로 sp_executesql이 EXECUTE 문보다 효율적이다.
CREATE PROCEDURE [dbo].[USP_TEST_PROC]
@in_Name VARCHAR(20) = '',
@in_Age INT = ''
AS
BEGIN
DECLARE @query VARCHAR(MAX);
DECLARE @whereQuery VARCHAR(MAX);
SET @query = '';
SET @whereQuery = '';
IF (@in_Name <> '')
BEGIN
SET @whereQuery = N' AND A.Name = ''' + @in_Name + ''' '
END
IF (@in_Age > 0)
BEGIN
SET @whereQuery = N' AND A.Age = ''' + @in_Age + ''' '
END
SET @query = N'SELECT *
FROM TBL_TEST_TABLE A
INNER JOIN TBL_TEST_TABLE2 B ON A.ID = B.ID
WHERE 1=1'
/*****************************************************************/
-- 1. EXECUTE 사용
EXEC (@query + @whereQuery)
-- 2. sp_executesql 사용
DECLARE @SQLString NVARCHAR(MAX);
DECLARE @ParmDefinition NVARCHAR(500);
SET @SQLString = @query + @whereQuery;
SET @ParmDefinition = N'@in_Name VARCHAR(20),
@in_Age INT'
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@in_Name = @in_Name,
@in_Age = @in_Age
END
...더보기
[참고]
https://technet.microsoft.com/ko-kr/library/ms175170(v=sql.105).aspx
반응형