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

Añade tu respuesta

Haz clic para o