despùes de todo, no necesite el procedimiento almacenado.
 
Resulta ser que mi panorama de trabajo es mas o menos con unas 160 tablas, las cuales manejan mucha redundancia y valores nulos, y se hacen muchas consultas de conteo, que son muy ineficientes,  mi labor es optimizar, y para ello empeze a crear tablas nuevas como si fueran unas vistas materializadas de oracle, pero son cimplemente unas tablas que creo fruto de un query. como son tantas pues no conoxco todo el sistema. 
al fin de cuentas mi solucion fue, crear otra tabla, y con ella actualizar los valores de otras 3 tablas y ya, me vali del uso de vistas. 
de todos modos estoy en proceso de aprendizaje con el EL PL/PGSQL, y mi procedimiento quedo asi por si a agluein le sirve:    
Código sql:
Ver original- CREATE OR REPLACE FUNCTION p_update_locales_in_count() RETURNS INTEGER AS $BODY$ 
- DECLARE  
-     query_count         RECORD; 
-     query_has_locales   RECORD; 
-     real_data           RECORD; 
- BEGIN 
-      
-     FOR query_count IN  SELECT  co.neighborhood_code,co.city_code  
-                         FROM    conteo_manzanas_barrio_co co,sm_city ci 
-                         WHERE   co.city_code = ci.pk_city AND has_locales = TRUE 
-                         LIMIT 1 OFFSET 0 LOOP 
-          
-         SELECT  INTO real_data  sl.pk_locale,sl.name 
-         FROM    sm_locale sl,sm_neighborhood sn,servcon_barrios sb 
-         WHERE   sn.pk_neighborhood = query_count.neighborhood_code AND 
-                 sl.fk_pk_city = query_count.city_code AND 
-                 sb.cod_localidad = sl.locale_code AND 
-                 sb.cod_barrio = sn.neighborhood_code AND 
-                 sl.name = sb.nom_localidad; 
-                  
-         UPDATE  conteo_manzanas_barrio_co  
-         SET     locale_code = real_data.pk_locale, locale_name = real_data.name  
-         WHERE   neighborhood_code = query_count.neighborhood_code; 
-          
-     END LOOP; 
-   
-     RETURN 0;    
- END $BODY$ 
- LANGUAGE plpgsql;