El problema es que estás usando RDB$SET_CONTEXT dentro de un SELECT que devuelve varias filas, por lo que la función se ejecuta una vez por cada fila.
En Firebird estas funciones no son “variables globales” sino que se evalúan por fila.
Si quieres que se ejecute una sola vez, usa FROM RDB$DATABASE, o mejor aún, evita SET_CONTEXT y usa una subconsulta o CTE.
Te copio respuesta del primo chatgpt:
