Otra opción es la siguiente:
En Firebird 2.1 no tendrias que hacer nada mas ya que existe la función
lpad dentro del motor... solo sería cuestión de hacer lo siguiente:
Código SQL
[-]Insert into Facturas (Numero,...) values (lpad((Select Gen_Id(FACTURAS, 1) from rdb$database), 8, '0'));
Pero como estas usando Firebird 2.0, deberas registrar la UDF, lo bueno es que esa función ya viene en las UDFs que se distribuyen dentro de Firebird 2.0, por lo que solo bastaría con hacer lo siguiente:
Código SQL
[-]DECLARE EXTERNAL FUNCTION lpad
CSTRING(255), INTEGER, CSTRING(1)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf';
Y luego si, en tu sentencia SQL, hacer lo que dije mas arriba, osea:
Código SQL
[-]Insert into Facturas (Numero,...) values (lpad((Select Gen_Id(FACTURAS, 1) from rdb$database), 8, '0'));
Y listo, eso es todo. Espero te sirva

.