El mié, 01-04-2009 a las 19:08 +0200, Conxita Marín escribió: > Gracias por tu solución, el problema és que el código del resto de la > función es bastante complejo y ya està escrito en plpgsql. > Esperaré aun poco a ver si alguien me da otra solución simple en plpgsql, > sino tiraré de tablas temporales para implementar el vector.
Algo más feo pero supongo que podrías considerar esto: CREATE OR REPLACE FUNCTION pepe_master (integer) RETURNS VOID AS $BODY$ DECLARE nombre_funcion VARCHAR:= 'pepe_child'; notificacion VARCHAR:= $$RAISE NOTICE 'Elemento:% (%)',elemento,array[elemento];$$; funcion VARCHAR:= ' CREATE OR REPLACE FUNCTION ' || nombre_funcion || ' () RETURNS VOID AS $$ DECLARE array INTEGER[' || $1 || ']; elemento INTEGER; BEGIN FOR elemento IN 1..' || $1 || ' LOOP array[elemento]:=elemento; ' || notificacion || ' END LOOP; END; $$ LANGUAGE PLPGSQL; '; garbage VARCHAR; BEGIN EXECUTE funcion; EXECUTE 'SELECT ' || nombre_funcion || '()'; END; $BODY$ LANGUAGE PLPGSQL; SELECT pepe_master(10); De hecho la otra solución que te dieron se me hizo mejor, pero bueno aquí solo se aportan ideas. -- TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podr� leerlo