On Fri, Sep 18, 2009 at 10:37 PM, Alvaro Herrera <alvhe...@alvh.no-ip.org>wrote:
> Sergio Gabriel Rodriguez escribió: > > > > > > Luego de haber echo el cambio que dices, volviste a hacer la prueba que > > > sugiere Alvaro sin ningún problema? > > > > > > > > > >>>> create schema "mi esquema" create table "mi tabla" (); > > > >>>> select dar_permisos("mi esquema", current_user, 'all'); > > > > Si, anduvo bien, mi pregunta apunta a si hay algún otro error que no > estoy > > viendo > > ¿Funciona realmente? Lo que quería hacerte notar es que debes usar > quote_ident: > > CREATE OR REPLACE FUNCTION "public"."dar_permisos" (esquema varchar, > usuario varchar, privilegio varchar) RETURNS boolean AS > $BODY$ > DECLARE > registro record; > BEGIN > FOR registro IN SELECT * FROM pg_tables WHERE schemaname= esquema LOOP > EXECUTE 'GRANT ' || privilegio || ' ON ' || quote_ident(esquema) > || '.' || > quote_ident(registro.tablename) || ' TO ' || quote_ident(usuario); > END LOOP; > RETURN TRUE; > END; > $BODY$ > LANGUAGE 'plpgsql' VOLATILE ; Gracias Alvaro, si funcionó, pero pensé que apuntabas al tipo de dato de current_user y cambié el parámetro usuario de varchar a name, no noté lo de quote_indent lo voy a probar Sergio Gabriel Rodríguez http://www.3trex.com.ar