Re: [Pgsql-ayuda] procedimientos (esto me va a matar)

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.

In response to

Browse pgsql-es-ayuda by date

  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)