Red de conocimiento del abogados - Ley de patentes - Cómo implementar la paginación de datos en SQL requiere declaraciones específicas, gracias

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>

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>

@tblName "]" @strTmp " " @strOrder

end

end

exec (@strSQL)