Navegando hace tiempo conseguí en este foro como crear las variables de sesión en PostgreSQL, con estas funciones fortalecemos un poco mas el Manejador de Base de Datos, no es muy frecuente su uso, pero en el caso de las auditorías son de mucha utilidad, a la final permite tener a la mano cualquier valor en una conexión activa.

Por ahora esta funcionalidad no es parte de PostgreSQL, por lo que se tiene que crear dos funciones con el lenguaje PL/PgSQL por lo que tiene que estar instalado en la Base de Datos; la primera nos permite definir una sesión cuando el usuario se conecta y en ella almacenar un valor en una variable, al finalizar su conexión toda información desaparecerá, la segunda permite recuperar en la conexión activa el valor almacenado en una determinada variable.

A. Función que permite definir una variable de sesión:

CREATE OR REPLACE FUNCTION set_session(session_name TEXT, session_value TEXT) 
  RETURNS VOID AS 
$BODY$ 
BEGIN
  PERFORM relname
  FROM pg_class
  WHERE relname = 'tbl_session'
    AND CASE WHEN has_schema_privilege(relnamespace, 'USAGE')
             THEN pg_table_is_visible(oid) ELSE false END;

  IF not found THEN
    CREATE TEMPORARY TABLE tbl_session (name TEXT, value TEXT);
  ELSE
    DELETE FROM tbl_session WHERE name = session_name;
  END IF;

  INSERT INTO tbl_session VALUES (session_name, session_value);
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;

B. Función que permite obtener el valor de una variable de sesión:

CREATE OR REPLACE FUNCTION get_session(session_name text)
  RETURNS text AS
$BODY$ 
BEGIN 
  PERFORM relname
  FROM pg_class
  WHERE relname = 'tbl_session'
    AND CASE WHEN has_schema_privilege(relnamespace, 'USAGE')
             THEN pg_table_is_visible(oid) ELSE false END;
  
  IF not found THEN 
    RETURN NULL;
  ELSE
    RETURN (SELECT value FROM tbl_session WHERE name = session_name);
  END IF;
END;
$BODY$
  LANGUAGE 'plpgsql' STABLE
  COST 100;
ALTER FUNCTION get_session(text) OWNER TO postgres;

En el siguiente ejemplo podemos apreciar como se usa:

SELECT set_session('USER_ID', '12345');
SELECT get_session('USER_ID');