Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中的存储过程错误_Sql_Sql Server - Fatal编程技术网

SQL Server中的存储过程错误

SQL Server中的存储过程错误,sql,sql-server,Sql,Sql Server,我无法运行此查询,哪里可能是错误,因为它没有问题,谢谢 CREATE PROCEDURE Test @PageSize int, @PageNumber int AS SELECT PK_ID, Test, Descripcion FROM (SELECT PK_ID, Test, Descripcion, ROW_NUMBER() OVER (ORDER BY Test, PK_ID) AS

我无法运行此查询,哪里可能是错误,因为它没有问题,谢谢

CREATE PROCEDURE Test
   @PageSize int,
   @PageNumber int 
AS
   SELECT 
       PK_ID, Test, Descripcion 
   FROM 
      (SELECT
           PK_ID, Test, Descripcion, 
           ROW_NUMBER() OVER (ORDER BY Test, PK_ID) AS RowNumber 
      FROM 
        Mydatabase
     ) AS Test
WHERE 
    RowNumber BETWEEN @PageSize * @PageNumber AND @PageSize * (@PageNumber)

尝试将页面添加到页面范围的上限:

WHERE RowNumber BETWEEN @PageSize * @PageNumber 
AND @PageSize * (@PageNumber + 1) -- added 1 here

根据页面的编号方式(从0开始或从1开始),您可能应该将
WHERE
子句更改为以下内容之一:

  • 如果页码从0开始:

    WHERE RowNumber BETWEEN @PageSize * @PageNumber + 1
                        AND @PageSize * (@PageNumber + 1)
    
  • 如果页码从1开始:

    WHERE RowNumber BETWEEN @PageSize * (@PageNumber - 1) + 1
                        AND @PageSize * @PageNumber
    

  • 如果可以,为什么会有错误?您收到的错误是什么?我认为您的where子句不正确。两端相同,因此此查询只能返回0或1行。所有问题都是
    +1
    。。非常感谢。