Ver Mensaje Individual
  #35 (permalink)  
Antiguo 21/11/2012, 07:50
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Secuencia para dos tablas

Sería algo así:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION inserciones(fec_ini_actividad DATE,fec_fin_actividad DATE,hor_ini_actividad CHARACTER VARYING(30),hor_fin_actividad CHARACTER VARYING(30),fen_actividad INTEGER,vol_actividad INTEGER,ban_actividad CHARACTER VARYING(20),nba_actividad INTEGER,
  2.   rep_actividad CHARACTER VARYING(30),
  3.   obs_actividad text,
  4.   id_cat INTEGER,
  5.   id_cat INTEGER[]
  6. ) RETURNS INTEGER AS $$
  7. DECLARE
  8. id_tabla BIGINT;
  9. BEGIN
  10. id_tabla := secuenciaa();
  11. INSERT INTO actividad VALUES (id_tabla,fec_ini_actividad,fec_fin_actividad,hor_ini_actividad,hor_fin_actividad,fen_actividad,vol_actividad,ban_actividad,nba_actividad,rep_actividad,obs_actividad);
  12. FOR i IN 1..array_upper(id_cat,1) LOOP
  13. INSERT INTO subfenomenos VALUES (NEXTVAL('subfenomenos_id_sub_fenomeno_seq'),id_tabla,i);
  14. END LOOP;
  15. RETURN id_tabla;
  16. END;
  17. $$ LANGUAGE plpgsql;

Con el array_upper sabes la cantidad de elementos que tiene el array. Con el for los recorres todos y haces una inserción por cada uno.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming