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', -- Establece 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
else --Ejecutar operación de consulta
comenzar
si @OrderType != 'asc' p>
comenzar
> set @strTmp = "<(select min"
set @strOrder = " ordenar por [" + @Orderfld +"] desc"
end
else
comenzar
set @strTmp = ">(select max"
set @strOrder = " ordenar por [" + @Orderfld +"] asc"
end
set @strSQL = "select top " + str(@PageSize) + " " + @RetColumns + " from ["
+ @tblName + "] donde [" + @Orderfld + "]" + @strTmp + "(["
+ @Orderfld + "]) de (seleccione arriba " + str((@PageIndex-1)* @PageSize) + " ["
+ @Orderfld + "] de [" + @tblName + "]" + @strOrder + ") como tblTmp)"
+ @strOrder
if @strWhere != ''
set @strSQL = "select top " + str(@PageSize) + " " + @RetColumns + " from ["
+ @tblName + "] donde [" + @Orderfld + "]" + @strTmp + "(["
+ @Orderfld + "]) de (seleccione arriba " + str(( @PageIndex-1)*@PageSize) + " ["
+ @Orderfld + "] de [" + @tblName + "] donde (" + @strWhere + ") "
+ @strOrder + ")
como tblTmp) y (" + @strWhere + ") " + @strOrder
si @PageIndex = 1
comenzar
set @strTmp = ""
if @strWhere != ''
set @strTmp = " donde (" + @strWhere + ")"
set @strSQL = "select top " + str(@PageSize) + " " + @RetColumns + " de ["
+ @tblName + "]" + @strTmp + " " + @strOrder
fin p>
final
ejecutivo (@strSQL)