El procedimiento almacenado para Firebird sería algo como este (probado en una tabla de prueba que tengo):
Código SQL
[-]
SET TERM ^ ;
CREATE PROCEDURE PINTAR_TABLA
RETURNS (
NEW_COLOREAR INTEGER,
NEW_FECHA DATE,
NEW_NOMBRE VARCHAR(30),
NEW_ID INTEGER)
AS
DECLARE VARIABLE VAR_COLOREAR INTEGER;
DECLARE VARIABLE VAR_ID INTEGER;
begin
var_colorear = 0;
var_id = 0;
for select ID, NOMBRE, FECHA from tabla1 order by ID, FECHA, NOMBRE
into :new_id, :new_nombre, :new_fecha
do
begin
if (var_id <> :new_id) then var_colorear = 1 - var_colorear;
new_colorear = var_colorear;
var_id = :new_id;
suspend;
end
end
^
SET TERM ; ^
GRANT SELECT ON TABLA1 TO PROCEDURE PINTAR_TABLA;
GRANT EXECUTE ON PROCEDURE PINTAR_TABLA TO SYSDBA;
Saludos,