Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/07/2007, 00:17
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Cursores, Tablas Temporales Y Pesadillas

Hola de nuevo foreros !!!

Bueno, tengo otra pregunta para mi aprendizaje con PostgreSQL, jejeje. La cuestión es la siguiente, mi intención es crear una tabla temporal con los datos de una tabla original, recorrer un cursor con los datos de la tabla original y modificar un campo de la tabla temporal con un campo de la tabla original.

Para ello he realizado el siguiente código el cual (por eso posteo aqui) no me compila:

Código:
CREATE OR REPLACE FUNCTION pprueba() RETURNS SETOF tusuarios AS
$BODY$	
	--Creo el cursor.
	DECLARE micursor refcursor;
	BEGIN
		--Creo la tabla temporal con los datos de la tabla orignial.
		CREATE TEMPORARY TABLE tusuarios_temp AS SELECT * FROM tusuarios;
		
		--¿Recorro el cursor de la tabla original, cogiendo los campos que necesito
		OPEN micursor FOR SELECT apellido_1 FROM tusuarios
		LOOP
			--¿Asigno a una variable (papellido_1) el valor del campo recogido por el open?
			FETCH NEXT micursor INTO papellido_1
			--¿Modifico el campo de la tabla temporal con el valor de la variable?
			UPDATE tusuarios_temp SET apellido_2=papellido_1
		END LOOP;

		FOR tusuarios_temp 
		LOOP
			--¿Devuelvo los datos de la tabla temporal para mostrarlos en mi aplicacion?
			RETURN NEXT  tusuarios_temp;
		END LOOP;

		DROP TABLE tusuarios_temp;
	END;
$BODY$
LANGUAGE "plpgsql" VOLATILE;


Me imagino que habrá un par de cosas mal, he estado mirando la documentación y bueno.. he llegado hasta aqui, por lo demás estoy un poco estancado, asi que si me pueden orientar, les agradecería que me hecharan un cable.

Se que quizás lo que quiero hacer hay una forma más óptima de realizarlo, pero en principio quiero hacerlo asi para aprender a usar tablas temporales y cursores.

No obstante, también agradecería, de forma secundaria, me dijeran la forma más óptima de resolver dicha cuestión.

Una vez más agradecer a Seyko por la solución sobre la devolución de un cursor en un SP, gracias a tu último post, amigo, he conseguido por fin recibir datos en .NET atraves de un SP de posgre. Lo postearé en breves en .NET ya que he mirado en google y he visto mucha gente perdida con este tema. Nuevamente, gracias por la colaboración de este foro.
__________________
Charlie.