Hola granchop!
Aquí tienes un ejemplo de un procedimiento almacenado en FireBird que se comporta como un SELECT
Código SQL
[-]
SET TERM !!;
CREATE PROCEDURE prueba( p1 SMALLINT)
RETURNS (
campo1 SMALLINT,
campo2 NUMERIC(15,2),
.
.
.
campoN VARCHAR(15))
AS
BEGIN
FOR SELECT
c1,
c2,
.
.
.
cN
FROM T1
WHERE c1=
1
INTO
:campo1,
:campo2,
.
.
.
:campoN
DO
SUSPEND;
END!!
SET TERM ;!!
Después solamente hay que llamar al procedimiento de la siguiente manera:
Espero que te sea útil