Hace poco desarrollando una pequeña aplicación web con JSP y Postgres como Base de Datos, me vi en la necesidad de escribir una función en pl/pgsql para crear roles, con la finalidad de poder administrar mis usuarios de una mejor manera. Uno de los inconveniente que tuve se debió a la forma de ejecutar la sentencia (Create Role «usuario») dado que esta no se podía ejecutar de una manera simple como sentencia estática entonces revisando algo de información y buscando en la web encontré que la forma facil de hacerlo seria con el comando «Execute», mas o menos como lo indico a continuacion:
query_role varchar(200);
….
query_role = ‘Create Role » ‘ || usuario || ‘ » Login Password »’ || tu_password || »’ NOSUPERUSER ….’;
Execute query_role;
….
De esta manera genere una funcion enviando como parametros «usuario» y «my_password» asi poder crear los roles. Lo mismo seria para las sentencias GRANT/REVOKE.