Ver Mensaje Individual
  #17  
Antiguo 17-07-2007
Avatar de ariefez
ariefez ariefez is offline
Miembro
 
Registrado: sep 2005
Ubicación: Perú - Lima
Posts: 63
Reputación: 21
ariefez Va por buen camino
Tu sentencia esta bien solo le falta unos parentesis

Código SQL [-]
    SELECT FIRST (:PAGE_NF) SKIP (:PAGE_NF * (:PAGE_NRO - 1))
donde:
PAGE_NF Numero de registros por pagina
PAGE_NRO el numero de pagina

este es el codigo q uso, para darte un ejemplo

Código SQL [-]
/* CLIENTE - DISPONIBLES */

SET TERM ^ ;

CREATE OR ALTER PROCEDURE CLI_SELECT (
  CLIENTE TYPE OF D_CLI_NOM,
  DNI TYPE OF D_RUC,
  PAGE_NF INTEGER,
  PAGE_NRO INTEGER,
  IN_BLOCKED SMALLINT)
RETURNS (
  CLI_ID INTEGER,
  CLI_NOM VARCHAR(60),
  RUC VARCHAR(15),
  BLOCKED SMALLINT)
AS
BEGIN
  FOR
    SELECT FIRST (:PAGE_NF) SKIP (:PAGE_NF * (:PAGE_NRO - 1))
      CLI_ID, CLI_NOM, RUC, BLOCKED
    FROM
      CLIENTES
    WHERE
      0 < CLI_ID
      AND (:IN_BLOCKED = 1 OR BLOCKED = 0)
      AND (:CLIENTE IS NULL OR CLI_NOM LIKE '%' || :CLIENTE || '%')
      AND (NI IS NULL OR RUC LIKE '%' || NI || '%')
    ORDER BY CLI_NOM, RUC, CLI_ID
    INTO :CLI_ID, :CLI_NOM, :RUC, :BLOCKED
  DO SUSPEND;
END^

SET TERM ; ^

Agrego: probado en firebird 2.0 y 2.1 beta
Responder Con Cita