반응형
동적 SQL이란 ?
정적인 것과 반대로 SQL 문이 완성되지 않은 것을 말한다. WHERE 절이나 UPDATE절 등의 조건이 프로그램이 실행 될 때 결정될 때 동적 SQL이 필요하다. 유연하게 SQL문이 완성하여 실행 될 수 있게 하는 인터페이스이다.
동적 SQL 특징
- 문자열 데이터이다.
- 시작과 끝을 나타내는 부호가 없다.
Example :
Create Procedure spSearchEmployees
@FirstName nvarchar(100),
@LastName nvarchar(100),
@Gender nvarchar(50),
@Salary int
As
Begin
Select * from Employees where
(FirstName = @FirstName OR @FirstName IS NULL) AND
(LastName = @LastName OR @LastName IS NULL) AND
(Gender = @Gender OR @Gender IS NULL) AND
(Salary = @Salary OR @Salary IS NULL)
End
---------
Declare @sql nvarchar(1000)
Declare @params nvarchar(1000)
Set @sql = 'Select * from Employees' + ' Where Firstname=@FirstName and LastName=@LastName'
Set @params = '@FirstName nvarchar(100), @LastName nvarchar(100)'
Execute sp_executesql @sql, @params, @FirstName='Mark', @LastName='Hastings'
아래에 쓰인 것 처럼 동적sql은 시스템 저장 프로시저 sp_executesql로 실행된다. 여기 시스템 저장 프로시저에는 2가지의 사전 정의된 매개변수가 있다.
Parameter | Description |
@statement | 첫 번째 매개변수이고 필수적이다. 실행시킬 SQL문을 포함하고 있어야 한다. |
@params | 두 번째 매개변수이고 선택적이다. 이것은 첫 번째 매개변수(@statement)의 매개변수를 지정할 때 쓰인다. |
프로시저(정적sql)와 동적sql문이 같이 있다. 같은 역할이지만 필터링이 늘어날 수록 더 복잡하게 된다. 동적sql이라해서 다 좋은 것만은 아니다. 퍼포먼스를 가져 오지만 보안 문제에 취약하다.
반응형
'Database > SQL Server' 카테고리의 다른 글
SQL Server - 월별 max값 찾기, 월별 합계 및 총합계 뽑아내기 (1) | 2020.12.29 |
---|---|
SQL Server - 자릿수 맞추기, 000 집어넣기 (0) | 2020.12.29 |
SQL Server - 전역 고유 식별자 GUID Globally Unique Identifier (0) | 2020.12.23 |
SQL Server - 순서 만들기 시퀀스 Sequence object (0) | 2020.12.23 |
sql 연습 (0) | 2020.12.22 |