Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2010, 09:42
Avatar de webness
webness
 
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Store procedure aporte

crea tablas a partir de una tabla maestra. Se visualiza uso de queries dinamicos, cursores de referencia y ciclos sencillos

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION p_poblaingas_subtables(VARCHAR) RETURNS VOID AS $$
  2. DECLARE
  3.    rec    refcursor;
  4.    SQL    VARCHAR;
  5.    city    ALIAS FOR $1;
  6.    year_mi INTEGER;
  7.    year_ma    INTEGER;
  8.    i    INTEGER;
  9.  
  10. BEGIN
  11.    SQL :=  'SELECT MIN(periodo) AS min,MAX(periodo) AS max
  12.        FROM    servcon_poblaingas_'||city;
  13.        
  14.    OPEN rec FOR EXECUTE SQL;
  15.    FETCH rec INTO year_mi,year_ma;
  16.    
  17.    i     :=  year_mi;        
  18.    
  19.    LOOP
  20.        SQL := 'CREATE TABLE servcon_poblaingas_'||city||'_'||i||' AS
  21.               SELECT * FROM servcon_poblaingas_'||city||'  WHERE periodo = '||i;
  22.                
  23.        EXECUTE SQL;
  24.        i  := i + 1;
  25.                    
  26.        EXIT WHEN  i > year_ma;
  27.    END LOOP;
  28.  
  29.    RETURN;
  30. END;
  31. $$LANGUAGE plpgsql;
  32.  
  33. SELECT     p_poblaingas_subtables('05001');