Ver Mensaje Individual
  #15 (permalink)  
Antiguo 11/11/2009, 14:49
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

Igual tenia el ultimo select mal hecho, muy mal hecho, ahora mi funcion es asi:

Código sql:
Ver original
  1. CREATE OR REPLACE FUNCTION p_update_locales_in_count() RETURNS INTEGER 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.                
  13.                 SELECT  INTO real_data  sl.pk_locale,sl.name
  14.                 FROM    sm_locale sl,sm_neighborhood sn,servcon_barrios sb
  15.                 WHERE   sn.pk_neighborhood = query_count.neighborhood_code AND
  16.                         sl.fk_pk_city = query_count.city_code AND
  17.                         sb.cod_localidad = sl.locale_code AND
  18.                         sb.cod_barrio = sn.neighborhood_code AND
  19.                         sl.name = sb.nom_localidad LOOP
  20.                
  21.                 UPDATE  conteo_manzanas_barrio_co
  22.                 SET     locale_code = real_data.pk_locale, locale_name = real_data.name
  23.                 WHERE   neighborhood_code = query_count.neighborhood_code;
  24.             END IF;
  25.            
  26.         END LOOP;
  27.        
  28.     END LOOP;
  29.  
  30.     RETURN 0;  
  31. END $BODY$
  32. LANGUAGE plpgsql;

y al ejecutar el procedimiento me da arroja este error

ERROR: record "real_data" is not assigned yet
DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT: PL/pgSQL function "p_update_locales_in_count" line 12 at select into variables
En la declaración:
select p_update_locales_in_count()