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 originalCREATE 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;