如何创建使用OFFSET在SQL Server中进行挂断的过程?

时间:2019-01-22 13:44:25

标签: sql sql-server

我想创建一个存储过程,以便使用OFFSET ROWS通过{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "db-data", "host": { "sourcePath": "/data/db" } } ], "containerDefinitions": [ { "name": "db", "image": "db_image_name", "essential": true, "memory": 128, "environment": [ { "name": "POSTGRES_USER", "value": "postgres" }, { "name": "POSTGRES_PASSWORD", "value": "password" }, { "name": "PGDATA", "value": "/data/db/pgdata" } ], "portMappings": [ { "hostPort": 5432, "containerPort": 5432 } ], "mountPoints": [ { "sourceVolume": "db-data", "containerPath": "/data/db" } ] }, { "name": "app", "image": "app_image_name", "essential": true, "memory": 128, "environment": [ { "name": "NODE_ENV", "value": "production" }, { "name": "DB_HOST", "value": "db" }, { "name": "DB_PORT", "value": "5432" }, { "name": "DB_PASSWORD", "value": "password" } ], "links": [ "db" ], "portMappings": [ { "hostPort": 80, "containerPort": 3000 } ] } ] } PageIndex来获取数据

1 个答案:

答案 0 :(得分:1)

您可以将OFFSETFETCH NEXT用于索引中的技术行数。演示在这里

CREATE PROCEDURE [dbo].[P_StudentSelectPaging]
@PageIndex          INT=1,
@PageSize           INT=10 
AS 
BEGIN   

   SET NOCOUNT ON;  
   SELECT ROW_NUMBER() OVER(ORDER BY Id DESC) AS RowNumber,[RecordCount]=COUNT(*) OVER(),
         Id,Name,City   
   FROM (
        SELECT          
            ISNULL(Id,0) AS Id,
            ISNULL(Name,0) AS Name,             
            ISNULL(City,'') AS City     
        FROM F_Posts P      
   ) AS tmpTable
   ORDER BY ISNULL(Id,1) DESC       

   OFFSET @PageSize * (@PageIndex-1) ROWS   
   FETCH NEXT @PageSize ROWS ONLY;              
END

注意:仅在高于SQL Server R2 2008的版本中支持OFFSET