From: | Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx> |
---|---|
To: | "Magnvs -- Carles Querol" <magnvsctv(at)hotmail(dot)com> |
Cc: | pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx |
Subject: | Re: [Pgsql-ayuda] procedimientos (esto me va a matar) |
Date: | 2004-03-16 21:11:24 |
Message-ID: | m31xnso5tv.fsf@conexa.fciencias.unam.mx |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
"Magnvs -- Carles Querol" <magnvsctv(at)hotmail(dot)com> writes:
> Hola, sigo con mi cruzada personal con los procedimientos almacenados... He
> escrito esto para modificar los permisos de un solo usuario a las tablas y
> secuencias de una base de datos (inicialmente quería que el procedimiento
> leyese el nombre del usuario como parámetro y modificar los permisos, pero
> no hay forma de que funcione).
Utiliza execute, ej:
CREATE OR REPLACE FUNCTION public.privilegis(text)
RETURNS int4 AS
'
DECLARE
username alias for $1;
taula1 record;
taula2 record;
suma int4;
BEGIN
suma:=0;
FOR taula1 IN SELECT *
FROM pg_tables
LOOP
IF taula1.schemaname=\'public\' THEN
execute ''GRANT ALL ON TABLE '' || taula1.schemaname || ''.'' || taula1.tablename || '' TO '' || username;
END IF;
suma:=suma+1;
END LOOP;
FOR taula2 IN SELECT *
FROM pg_statio_user_sequences
LOOP
IF taula2.schemaname=\'public\' THEN
execute ''GRANT ALL ON TABLE '' || taula2.schemaname || ''.'' || taula2.tablename || '' TO '' || username;
END IF;
suma:=suma+1;
END LOOP;
RETURN suma;
END;
'
LANGUAGE 'plpgsql';
Saludos,
Manuel.
From | Date | Subject | |
---|---|---|---|
Next Message | Danny Zurita Y. | 2004-03-16 22:29:45 | [Pgsql-ayuda] novato en postgres |
Previous Message | Magnvs -- Carles Querol | 2004-03-16 20:07:54 | [Pgsql-ayuda] procedimientos (esto me va a matar) |