Ver Mensaje Individual
  #11 (permalink)  
Antiguo 11/11/2009, 13:41
Avatar de webness
webness
 
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Procedimiento almacenado con ciclos anidados

bUENO, POR AHORA te cuento que pase por alto que en el utlimo query no se retorna un solo valor sino muchos, entonces inclui un tercer ciclo asi:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION p_update_locales_in_count() RETURNS BOOLEAN AS $BODY$
  2. DECLARE
  3.     query_count         RECORD;
  4.     query_has_locales   RECORD;
  5.     real_data           RECORD;
  6. BEGIN
  7.     FOR query_count IN SELECT neighborhood_code,city_code FROM  conteo_manzanas_barrio_co LOOP
  8.    
  9.         FOR query_has_locales IN SELECT has_locales FROM sm_city WHERE pk_city = query_count.city_code LOOP
  10.        
  11.             IF query_has_locales.has_locales THEN
  12.                 FOR real_data IN SELECT pk_locale,name FROM sm_locale WHERE fk_pk_city = query_count.city_code LOOP
  13.                
  14.                     UPDATE  conteo_manzanas_barrio_co
  15.                     SET     locale_code = real_data.pk_locale, locale_name = real_data.name
  16.                     WHERE   neighborhood_code = query_count.neighborhood_code;
  17.                 END LOOP;  
  18.             END IF;
  19.        
  20.         END LOOP;
  21.        
  22.     END LOOP;
  23.  
  24.     RETURNS TRUE;  
  25. END $BODY$
  26. LANGUAGE plpgsql;

SI NO FUNCIONA ASI, ENTONCES PROCEDO CON LO QUE QUE ME ACABASTE DE DECIR..


GRACIAS