2014. 3. 20. 15:00

별생각없이

 

Select TOP @nTemp
From @table;

 

 

이렇게 작성 했더니

 

'[변수]'근처의 구문이 잘못되었습니다. 필요 REAL, INTEGER, NUMERIC 또는 '('.

 

이런 에러가 ㅡ,.ㅡ;;

에라이~

 

1. 'TOP'에 변수를 사용할 수 있다.
'TOP'에 변수를 사용할 수 있게 된것이 'MSSQL 2005'부터 입니다.

그래서 그런지 가끔 'TOP'에는 변수를 쓸 수 없다고 생각하는 사람들이 있습니다.

 

하지만 가능합니다!

(참고 : MSDN - TOP(Transact-SQL))

 

MSDN에 보면 '2.TOP에 변수 사용'에서 변수를 소괄호(())로 감싸서 사용하는 것을 알수 있죠.

 

2. 'TOP'에 변수 사용하기
그냥 괄호만 추가 하면 됩니다.

 

Select TOP (@nTemp)
From @table;

 

괄호만 추가하면 상수를 넣을때와 똑같이 동작 합니다.

 

마무리
'mssql 2005' 이전버전은 그냥 동적쿼리로 가야 합니다 -_-;;;

그리고 원래 그렇게 써왔죠 ㅎㅎㅎㅎ