Proc [dbo].[diarylist_sp]
@page int
As
declare @sql nvarchar(500)
declare @rsql nvarchar(500)
Begin
SET NOCOUNT ON
set @rsql='select name from table where (name=''0'') '
set @rsql=@rsql + ' order by idx desc '
set @rsql=@rsql + 'offset ' +@page+ ' rows fetch next 30 rows only'
exec (@rsql)
SET NOCOUNT OFF
End
@page 에 30 이나 60 같은 숫자값을 넘겨주는데
이렇게 하면 offset ' to data type int. 이런 메세지가 뜨면서 진행이 안됩니다.
그래서 convert(varchar(100),@page) 식으로 변환을 시켜주면 작동이 되긴하는데
뭔가 좀 찜찜해서 이부분을 저렇게 변환해서 처리하는게 맞는지요?
Comment 2
-
카루카루
2014.12.23 18:43
감사합니다.!
형변환 우선순위에 의해서 int와 nvarchar를 연산을 하면 nvarchar가 int로 암시적 형변환을 합니다.
nvarchar에 숫자들만 들어 있으면 문제가 없는데 문자가 들어 있으면 에러가 나죠.
형변환 해서 연산하시는 것이 잘 하고 계신겁니다.
참고 : 암시적 형변환에서 데이터 형식 우선 순위