반응형
sql server 2000에서 sp_executesql 을 사용할 때 제약조건이 있었는데,
sql 문을 4000자 이상 처리할 수 없다는 것입니다.
sql 문은 유니코드 문자열(nvarchar 나 nchar)이어야 하기 때문에 최대 4000자까지 쓸 수 있습니다.
참고로 ntext 형은 변수 선언을 할 수 없습니다.
예를 들어 다음과 같은 쿼리가 있다고 해보죠.
declare @sql nvarchar(4000)
set @sql = 'select * from tableA .....'
exec dbo.sp_executesql @sql
만약 @sql에 4000자가 넘어가는 문장을 넣게되면 @sql은 4000자에서 문장을 자를것이고, 따라서 sp_executesql은 실패하게 될 것입니다.
하지만 sql server 2005에서는 nvarchar(max)라를 데이터 타입이 추가되었고, 변수 선언이 가능해 졌습니다.
다음과 같이 위 쿼리를 수정하면 sql server 2005에서는 4000자 이상되는 동적 쿼리도 처리가 가능해 집니다.
declare @sql nvarchar(max)
set @sql = 'select * from tableA .....'
exec dbo.sp_executesql @sql
[출처] sp_executesql 에서 nvarchar(max) 사용|작성자 영거니
반응형