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

Magnvs -- Carles Querol magnvsctv@hotmail.com
Tue, 16 Mar 2004 20:07:54 +0000


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). De momento, cuando ejecuto este procedimiento 
me da el siguiente error:

sococal=# select privilegis();
ERROR:  syntax error at or near "$1" at character 21
CONTEXT:  PL/pgSQL function "privilegis" line 16 at SQL statement

y el código es:

CREATE OR REPLACE FUNCTION public.privilegis()
  RETURNS int4 AS
'
	DECLARE
		taula1	record;
		taula2	record;
		suma   int4;

	BEGIN
		suma:=0;

		FOR taula1 IN SELECT *
			FROM pg_tables
		LOOP
			IF taula1.schemaname=\'public\' THEN
				GRANT ALL ON TABLE taula1.tablename TO sicd;
			END IF;
			suma:=suma+1;
		END LOOP;


		FOR taula2 IN SELECT *
			FROM pg_statio_user_sequences
		LOOP
			IF taula2.schemaname=\'public\' THEN
				GRANT ALL ON TABLE taula2.relname TO sicd;
			END IF;
			suma:=suma+1;
		END LOOP;

		RETURN suma;
	END;
'
  LANGUAGE 'plpgsql';

Sencillamente, no entiendo el error. Hasta mi conocimiento, '$1' representa 
el primer parámetro de la función, no?


Un saludo y gracias.


Carles Querol
magnvsctv@hotmail.com
carquesa@eui.upv.es

Linux Registered User #299843

_________________________________________________________________
Protege tu correo del spam y los virus con MSN 8. Prueba gratis dos meses 
MSN 8. http://join.msn.com/?pgmarket=es-es&XAPID=199&DI=1055