Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2010, 18:06
Avatar de webness
webness
 
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 4 meses
Puntos: 5
manejo de errores en pl/pgsql

buenas a todos

tengo un store procedure y en el estoy borrando un campo de muchas tablas. pero no todas las tablas tienen este campo, por lo tanto me genera error.

necesito atrapar este error de tal modo que me permita seguir con el resto de las tablas hasta que acabe.

Lastimosamente no entendi mucho la documentacion :(

ESTO ES LO QUE TENGO

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION p_shops_subtables_geoindex(CHARACTER VARYING)
  2.   RETURNS VOID AS
  3. $BODY$
  4. DECLARE
  5.     rec     RECORD;
  6.     shop_table  ALIAS FOR $1;
  7. BEGIN
  8.     FOR rec IN EXECUTE 'SELECT DISTINCT codigo_categoria FROM '||shop_table LOOP
  9.         EXECUTE 'ALTER TABLE '||shop_table||'_'||rec.codigo_categoria||' DROP COLUMN geom';
  10.  
  11.         EXCEPTION WHEN undefined_column THEN
  12.             -- do nothing
  13.         END;
  14.        
  15.         EXECUTE 'SELECT AddGeometryColumn ('||QUOTE_LITERAL(shop_table||'_'||rec.codigo_categoria)||','||QUOTE_LITERAL('geom')||',4326,'||QUOTE_LITERAL('POINT')||',2)';
  16.         EXECUTE 'UPDATE '||shop_table||'_'||rec.codigo_categoria||' set geom = GeometryFromText(''POINT(''||CX||'' ''||CY||'')'',4326)';
  17.         EXECUTE 'CREATE INDEX idx_info2009_'||rec.codigo_categoria||' ON '||shop_table||'_'||rec.codigo_categoria||' USING GIST (geom)';
  18.     END LOOP;
  19.     RETURN;
  20. END;
  21. $BODY$
  22.   LANGUAGE 'plpgsql' VOLATILE;

Última edición por webness; 23/09/2010 a las 18:18