728x90
동적 SQL 은
한 예로 asp, php 등과 같은 서버 스크립트에서 SQL문을 만들 때, 테이블 명이나 필드명을 변수 처리 해서 SQL 문을 유연하게 만든 것과 같습니다.

여러 번 사용할 수 있거나, 동적으로 만들어진 Transact-SQL문 또는 일괄 처리를 실행합니다. Transact-SQL문 또는 일괄 처리는 포함 매개 변수를 포함할 수 있습니다.


구문

sp_executesql [@stmt =] stmt[
   
{, [@params =] N'@parameter_name  data_type [,...n]' }
     {, [@param1 =] 'value1' [,...n] }
]


@stmt 인수에 대하여
Transact-SQL문 또는 일괄 처리를 포함한 유니코드 문자열입니다. stmt는 암시적으로 ntext로 변환될 수 있는 변수 또는 유니코드 상수여야 합니다. + 연산자로 두 개의 문자열을 연결한 식 등과 같은 보다 복잡한 유니코드식은 사용할 수 없습니다. 문자 상수도 사용할 수 없습니다. 상수가 지정된 경우에는 N이라는 접두사가 있어야 합니다.


실제로 테스트를 해 보겠습니다.



pubs DB를 이용한 테스트 : 변수가 하나일 때
 
execute sp_executesql
    N'select * from pubs.dbo.employee where job_lvl = @level',
    N'@level tinyint',
    @level = 35


pubs DB를 이용한 테스트 : 변수가 두개일 때
 
DECLARE @IntVariable INT, @IntVariable2 INT
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level and job_id = @job_id'

SET @ParmDefinition = N'@level tinyint, @job_id smallint'

SET @IntVariable = 35
SET @IntVariable2 = 14

EXECUTE sp_executesql @SQLString,
                    @ParmDefinition,
                    @level = @IntVariable,
                    @job_id = @IntVariable2

+ Recent posts