使用@格式的参数,就出错!
如下不使用(注释掉的为使用参数的),就没错!为什么?郁闷了。
Create procedure jskp_paging
(
@pagesize int=50,
@pageindex int=3
)
as
begin
  SELECT * FROM jskp2007up WHERE 记录号 IN
(
        SELECT TOP 40 记录号 FROM jskp2007up WHERE 记录号 NOT IN
        --SELECT TOP @pagesize 记录号 FROM jskp2007up WHERE 记录号 NOT IN
        (
         SELECT TOP 80 记录号 FROM jskp2007up  
         --SELECT TOP @pagesize*@pageindex 记录号 FROM jskp2007up
        )
)
end

解决方案 »

  1.   

    这样的语句要用动态的sql来实现
      

  2.   

    --try--Create procedure jskp_paging
    (
    @pagesize int=50,
    @pageindex int=3
    )
    as
    begin
    declare @str varchar(1000)
    set @str='SELECT * FROM jskp2007up WHERE 记录号 IN(SELECT TOP '+@pagesize+' 记录号 FROM jskp2007up WHERE 记录号 NOT IN ( SELECT TOP '+@pagesize*@pageindex+' 记录号 FROM jskp2007up))'
    exec(@str)
    end
      

  3.   

    TOP子句只能接受常量,不能接受变量。用SET ROWCOUNT { number | @number_var } 试试。