Cómo implementar la paginación de datos en SQL requiere declaraciones específicas, gracias
Sí, use procedimientos almacenados
El procedimiento almacenado de paginación es el siguiente
CREAR PROCEDIMIENTO GetRecordFromPage
@tblName varchar(255), -- Nombre de la tabla
@RetColumns varchar(1000) = '*', -- Las columnas que se devolverán, el valor predeterminado es todas
@Orderfld varchar(255), -- Nombre del campo de clasificación
@PageSize int = 10, -- tamaño de página
@PageIndex int = 1, -- número de página
@IsCount bit = 0, -- devuelve el número total de registros, se devolverán valores distintos de 0
@OrderType varchar(50) = 'asc', --Establezca el tipo de clasificación, los valores no asc estar en orden descendente
@strWhere varchar(1000) = ' ' -- Condiciones de consulta (nota: no agregue dónde)
AS
declarar @strSQL varchar(1000) -- Declaración principal
declarar @strTmp varchar( 300) -- Variable temporal
declarar @strOrder varchar(400) -- Tipo de clasificación
if @IsCount != 0 -- Estadísticas totales de ejecución
comenzar
if @strWhere != ''
set @strSQL = "select count(* ) como Total de [" @tblName "] donde " @strWhere
else
set @strSQL = "select count(*) as Total from [" @tblName "]"
fin
más
--Ejecutar operación de consulta
comenzar
if @OrderType != 'asc'
comenzar
set @strTmp = "lt; (select min"
set @strOrder = " ordenar por [" @Orderfld "] desc"
end
else
comenzar
set @strTmp = "gt;(select max"
set @strOrder = " ordenar por [" @Orderfld "] asc"
end p>
p>
set @strSQL = "select top " str(@PageSize) " " @RetColumns " de ["
@tblName "] donde [" @Orderfld "]" @strTmp "([ "
@Orderfld "]) de (select top " str((@PageIndex-1)*@PageSize) " ["
@Orderfld "] de [" @tblName " ]" @strOrder ") as tblTmp)"
@strOrder
if @strWhere != ''
set @strSQL = " seleccione arriba " str( @PageSize) " " @RetColumns " de ["
@tblName "] donde [" @Orderfld "]" @strTmp "(["
@Orderfld "]) de (seleccione la parte superior " str((@PageIndex-1)*@PageSize)
" ["
@Orderfld "] de [" @tblName "] donde (" @strWhere ") "
@strOrder ") como tblTmp) y (" @strWhere ") " @strOrder
si @PageIndex = 1
comenzar
establecer @strTmp = ""
si @strWhere != ''
set @strTmp = " donde (" @strWhere ")"
set @strSQL = "select top " str(@PageSize) " " @RetColumns " de [" p>
p>
@tblName "]" @strTmp " " @strOrder
end
end
exec (@strSQL)