Insert/Update en un rango de tablas desde otro rango de tablas
Hola, estoy creando un PKG que contenga al menos dos procedures. Estos deberían obtener datos desde un rango de tablas, y realizar insert/update sobre otro rango de tablas.
El escenario sería:
tablas origen de datos:
desc noa_ave
UTCTIME DATE NOT NULL,
POINTNUMBER INTEGER NOT NULL,
VALUE FLOAT(126) DEFAULT (0.0),
TLQ INTEGER DEFAULT (32)
desc noa_ave_max
UTCTIME DATE NOT NULL,
POINTNUMBER INTEGER NOT NULL,
VALUE FLOAT(126) DEFAULT (0.0),
TLQ INTEGER DEFAULT (32),
UTCTIMEMAX DATE
tablas destino:
noa_ave_pot
(UTCTIME noa_ave = UTCTIMEMAX noa_ave_max),
POINTNUMBER noa_ave INTEGER NOT NULL,
VALUE noa_ave FLOAT(126) DEFAULT (0.0),
TLQ noa_ave INTEGER DEFAULT (32),
O sea debo obtener el máximo valor de cada una de las tablas de un rango _MAX, y encontrar para ese momento los valores de las tablas restantes y realizar un insert/update en una tercer tabla. Solo para datos del día anterior
El select que realiza lo que que deseo, sería algo así:
SELECT a.utctime UTCTIME, a.pointnumber POINTNUMBER, a.VALUE VALUE, a.tlq TLQ, b.value VAL_MAX
FROM noa_ave a, noa_ave_max b
WHERE a.utctime > SYSDATE -1
AND a.utctime < SYSDATE
AND b.value in (select max(value) from noa_ave_max)
GROUP BY a.utctime, a.pointnumber, a.VALUE, a.tlq, b.value
ORDER BY a.utctime DESC;
query para obtener el rango de tablas _MAX
SELECT TABLE_NAME
FROM USER_TABLES
WHERE table_name LIKE 'NOA_%_MAX'
ORDER BY TABLE_NAME ASC;
query para obtener el resto del rango de tablas
SELECT TABLE_NAME
FROM USER_TABLES
WHERE TABLE_NAME NOT LIKE '%MAX%'
AND TABLE_NAME NOT LIKE '%MIN%'
AND TABLE_NAME LIKE 'NOA_%'
Como utilizar dos cursores para obtener los rangos de tablas inicial?
Como utilizar Como utilizar dos cursores para obtener los rangos de tablas destino y aplicar sobre ellas insert/update?
Muchas gracias!
Espero que puedan ayudarme.
carlos