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
[-]
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