Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/12/2010, 20:22
Avatar de iislas
iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Paginación con store procedure... ¿dónde se lleva a cabo?

Veamos, si el concepto es devolver un cierto numero de registros a tu "cliente" que no esten tomados por otro "cliente" (me suena a tipo operadores), entonces ya lo hemos tratado aca y se hace mediante un campo tipo bandera (tal vez con el numero del id del que toma los registros). Creo que por este lado, no debe haber duda.

Paginar:
Código SQL:
Ver original
  1. CREATE PROCEDURE #Paginacion
  2. @Apellido VARCHAR(40) = NULL OUTPUT, @Nombre VARCHAR(40) = NULL OUTPUT
  3. AS
  4. SET NOCOUNT ON
  5.  
  6. -- Seleccione las proximas 5 filas
  7. SELECT TOP 2 WITH TIES *
  8. FROM #test
  9. WHERE CASE WHEN @Apellido IS NULL THEN 1
  10. WHEN @Apellido + @Nombre < apellido + nombre THEN 1 ELSE 0 END=1
  11. ORDER BY apellido, nombre
  12.  
  13. -- Seleccione el siguiente apellido
  14. SELECT @Apellido = MAX(apellido),
  15. @Nombre = MAX(nombre)
  16. FROM ( SELECT TOP 2 apellido, nombre
  17. FROM #test
  18. WHERE CASE WHEN @Apellido IS NULL THEN 1
  19. WHEN @Apellido + @Nombre < apellido + nombre THEN 1 ELSE 0 END=1
  20. ORDER BY apellido, nombre) AS N
  21. GO
  22. /* Fin de Declaracion de Procedimiento */
  23.  
  24. /* Uso de Procedimiento */
  25. DECLARE @UltimoApellido VARCHAR(40), @UltimoNombre VARCHAR (40)
  26.  
  27. EXEC #Paginacion @UltimoApellido OUTPUT, @UltimoNombre OUTPUT
  28. EXEC #Paginacion @UltimoApellido OUTPUT, @UltimoNombre OUTPUT
  29. EXEC #Paginacion @UltimoApellido OUTPUT, @UltimoNombre OUTPUT
  30. /* Fin de Procedimiento */

A este query, solo le hace falta agregar en el filtro del WHERE, aquellos que esten "libres", que no esten tomados por otro "cliente".
__________________
MCTS Isaias Islas