Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2008, 16:24
rquilca
 
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 73
Antigüedad: 16 años, 5 meses
Puntos: 2
Crear Procedimiento Almacenado

Les comento mi problema, miren tengo una tabla de ciudades y sus respectivos datos , mas o menos de la siguiente manera.

ID_CIUDAD ANO VAL1 VAL2 VAL3 VAL4 . . . VAL(N)
1 2002 3 6 0 'NULL' . . . .
1 2004 0 'NULL' 'NULL' 'NULL' . . . .

la idea es actualizar los datos del 2004 para que tome la siguiente secuencia
1 2004 0 6 0 'NULL' . . . .

cada que aparezca un NULL en cualquier campo del año 2004, de la ciudad 1, este campo deberia de copiar del año 2002

ya cree un PA, pero no se cual es mi problemilla, haber si me ayudan con esto,

create function ronald(character) returns integer as $$
declare
valor2004 float;
valor2002 float;
valores tipo001;
flag float;
val float;
CamposTabla NameCampo;
NCampo character;
BEGIN
FOR valores IN SELECT DISTINCT(id) FROM humano ORDER BY id ASC LOOP
SELECT valora INTO valor2002 FROM humano WHERE year = 2002 AND id = valores.tipo001_01;
SELECT valora INTO valor2004 FROM humano WHERE year = 2004 AND id = valores.tipo001_01;
IF valor2004 IS NULL THEN
UPDATE humano SET valora = valor2002 WHERE year = 2004 AND id = valores.tipo001_01;
END IF;
IF (valor2004 = 0) THEN
UPDATE humano SET valora = valor2002 WHERE year = 2004 AND id = valores.tipo001_01;
END IF;
END LOOP;

RETURN 0;

END;
$$
LANGUAGE plpgsql;

el detalle es que solo funciona para el campo valora, la idea es hacerlo un PA que lea todos los campos a su vez