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
반응형
'IT-개발,DB' 카테고리의 다른 글
[MS-SQL SERVER] CAST 및 CONVERT 함수설명 (0) | 2010.09.20 |
---|---|
[MS-SQL Server 2005] 외래 키 관계 대화 상자 (0) | 2010.09.20 |
[ASP.NET] Base64 인코드 디코드(C#) (0) | 2010.09.16 |
[ASP.NET] ASP.NET에서 텍스트 박스 한글 우선 입력 방법!!! 가르쳐주세요 (0) | 2010.09.16 |
[C#] 라이선스용 컴퓨터 유일키 생성 (0) | 2010.09.16 |
댓글