Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: Danny Zurita Y.Date: 2004-03-16 22:29:45
Subject: [Pgsql-ayuda] novato en postgres
Previous:From: Magnvs -- Carles QuerolDate: 2004-03-16 20:07:54
Subject: [Pgsql-ayuda] procedimientos (esto me va a matar)

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group