Hola buenas, tengo este procedimiento.
Código:
DECLARE
contador INTEGER;
primero INTEGER;
ultimo INTEGER;
BEGIN
primero:0;
ultimo:120;
FOR contador IN primero..ultimo
LOOP
INSERT INTO DIM_EDAD (PK, GRUPO) SELECT contador,
CASE WHEN contador between 0 and 4 THEN 1
WHEN contador between 5 and 9 THEN 2
WHEN contador between 10 and 14 THEN 3
WHEN contador between 15 and 19 THEN 4
WHEN contador between 20 and 24 THEN 5
WHEN contador between 25 and 29 THEN 6
WHEN contador between 30 and 34 THEN 7
WHEN contador between 35 and 39 THEN 8
WHEN contador between 40 and 44 THEN 9
WHEN contador between 45 and 49 THEN 10
WHEN contador between 50 and 54 THEN 11
WHEN contador between 55 and 59 THEN 12
WHEN contador between 60 and 64 THEN 13
WHEN contador between 65 and 69 THEN 14
WHEN contador between 70 and 74 THEN 15
WHEN contador between 65 and 69 THEN 16
WHEN contador between 70 and 74 THEN 17
WHEN contador between 75 and 79 THEN 18
WHEN contador between 80 and 84 THEN 19
WHEN contador > 84 THEN 20
FROM DUAL;
END LOOP;
END;
Esto lo que hace me rellena esto: TABLA PK | GRUPO
0 | 1
1 | 1
2 | 1
3 | 1
4 | 1
5 | 2
6 | 2
7 | 2
8 | 2
9 | 2
10 | 3
11 | 3
12 | 3
13 | 3
14 | 3
15 | 4
.... | ...
Como veis me agrupa por cada 5 numeros, pero yo quiero parametrizar ese agrupamiento, para no tener que poner todos los
when creo que la soluciones seria meter un LOOP dentro de un insert pero no hay forma...algo asi, pero nada, vamos
Código:
DECLARE
contador INTEGER;
primero INTEGER;
ultimo INTEGER;
variable INTEGER;
agrupar INTEGER;
BEGIN
primero:0;
ultimo:120;
variable:0;
agruparA:0;
agruparB:4;
FOR contador IN primero..ultimo
LOOP
INSERT INTO DIM_EDAD (PK, GRUPO) SELECT contador,
FOR variable IN primero..ultimo/agrupar
CASE WHEN contador between agruparA and agruparB THEN variable+1;
agruparA = agruparA +5;
agruparB = agruparB + 5;
END;
FROM DUAL;
END LOOP;
END;
Creo que esto se podria hacer pero mi problema es que no se PL/SQL, alguna ayuda.
gracias