Hola Abel.
Hasta donde sé Firebird no contempla variables globales.
Si usas una versión anterior a la 2.0 podés usar UDF's o crearte un procedimiento:
Código SQL
[-]
CREATE PROCEDURE NUM_PI RETURNS(PI DOUBLE PRECISION)
AS
BEGIN
PI = 3.141592654;
END
A partir de la versión 2.0 tenes la opción de usar RDB$SET_CONTEXT y RDB$GET_CONTEXT:
Código SQL
[-]
CREATE PROCEDURE NUM_PI
AS
BEGIN
RDB$SET_CONTEXT('USER_TRANSACTION', 'NUM_PI', 3.141592654);
END;
Luego de ejecutar el procedimiento,
Código SQL
[-]
EXECUTE PROCEDURE NUM_PI;
podés usarlo hasta en un SELECT, como por ejemplo:
Código SQL
[-]
SELECT RDB$GET_CONTEXT('USER_TRANSACTION','NUM_PI') FROM RDB$DATABASE;
Un saludo.