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 ;
--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"In a specialized industrial society, it would be a disaster
to have kids running around loose." (Paul Graham)
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo
agradecerán