Acabo de darme cuenta que en una base de datos que tengo a mano, ya había hecho lo mismo con parámetros de fechas y toda la cosa, analizándolo recordé que la cuestión debe funcionarte asi:
Código SQL
[-]
CREATE PROCEDURE REPNUM (
E_LIMITE INTEGER = 1,
E_INICIAL DATE,
E_FINAL DATE)
RETURNS (
S_PREFIJO VARCHAR(3),
S_NUMERO VARCHAR(20),
S_LLAMADAS INTEGER)
AS
begin
FOR
execute statement 'select first ' || CAST(E_limite AS CHAR(1)) ||
' Prefijo, Numero, count(numero) as numlla from llamadas where fecha between '''||
:E_INICIAL||''' and '''||:E_FINAL||''' group by prefijo, numero order by prefijo, numlla desc'
INTO :S_Prefijo, :S_Numero, :S_Llamadas DO
suspend;
end