본문 바로가기
IT-개발,DB

[ms-sql] sp_executesql 에서 nvarchar(max) 사용

by SB리치퍼슨 2010. 9. 20.

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 

반응형

댓글