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

TENGO un procedimiento almacenado con ciclos o loops anidados, y este no retorna ningun valor, el procediento me lo deja crear sin problema pero cuando lo ejecuto no me genera un error.

El objetivo de este es actualizar los datos de 2 columnas de una tabla si y solo si hay datos para esa columna.

estoy viendo en: http://www.postgresql.org/docs/8.0/s...tructures.html, en la seccion 35.7.4. Looping Through Query Results un ejemplo para guiarme.

Mi codigo:
Código PL/PGSQL:
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.     query_locale        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.city_code LOOP
  10.        
  11.             IF query_locales.has_locales THEN
  12.                 SELECT  pk_locale,name FROM sm_locale WHERE fk_pk_city = query_count.city_code;
  13.                
  14.                 UPDATE  conteo_manzanas_barrio_co
  15.                 SET     locale_code = pk_locale, locale_name = name
  16.                 WHERE   neighborhood_code = query_count.neighborhood_code;
  17.             END IF;
  18.        
  19.         END LOOP;
  20.        
  21.     END LOOP;
  22.  
  23.     RETURNS TRUE;  
  24. END $BODY$
  25. LANGUAGE plpgsql;

Y EL ERROR QUE BOTA ES:

Código ERROR:
Ver original
  1. [COLOR="Red"][SIZE="3"][FONT="Comic Sans MS"]
  2. Error de SQL:
  3.  
  4. ERROR:  schema "query_count" does not exist
  5. CONTEXT:  SQL statement " SELECT has_locales FROM sm_city WHERE pk_city = query_count.city_code.city_code"
  6. PL/pgSQL function "p_update_locales_in_count" line 8 at for over select rows
  7.  
  8. En la declaración:
  9. SELECT * FROM p_update_locales_in_count()[/FONT][/SIZE][/COLOR]
¿EN SINTESIS QUE TIENE DE MALO MI PROCEDIMIENTO, ES ESA LA FORMA CORRECTA DE LLAMARLO?