В итоге 3 вариант был модифицирован до:
CREATE OR REPLACE FUNCTION setvar(p_name character varying, p_val character varying, p_name2 character varying, p_val2 character varying)
RETURNS void AS
$BODY$BEGIN
EXECUTE 'SET SESSION usrvar.'||$1||' = '''||$2||'''; SET SESSION usrvar.'||$3||' = '''||$4||''';';
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
PostgreSQL. Пользовательские данные в рамках сессии