CURSOR INVOCANDO UNA TABLA POR MEDIO DE UNA VARIABLE

JOMACA10
08 de Diciembre del 2004
HOLA AMIGOS, POR FAVOR AYUDENME, SOY PRINCIPIANTE EN PL/SQL, Y TENGO EL PROBLEMA DE QUE TENGO UNA TABLA CON INFORMACION DE CADA MES DEL AÑO, Y ESTAS TINEN EXACTAMENTE LA MISMA ESTRUCTURA.

AHORA NECESITO HACER UN ACUMULADO DE CADA MES EN OTRA TABLA QUE TIENE UNA COLUMNA PARA CADA MES.

INTENTE HACERLO POR MEDIO DE UN CORSOR, DE LA SIGUIENTE MANERA, PERO NO ME FUNCIONA.

DECLARE
CURSOR PROC IS SELECT PP_CODIGO, PP_ORIGEN, PP_CAN, PP_CANOF, PP_TIPO, PP_PIEZAS, PP_REDUC FROM :W_MESPRO WHERE PP_REDUC = 'X'

EN DONDE W_MESPRO ES LA VARIABLE EN DONDE GUARDO EL NOMBRE DE LA TABLA QUE NECESITO UTILIZAR PARA TRAER LA INFORMACION DEL MES QUE SE NECESITE.

LES AGRADEZCO SU AYUDA...... SALUDOS Y GRACIAS.

Rodolfo Reyes
08 de Diciembre del 2004
Creo que la unica manera de hacer un query dinamico es con Execute Immediate.

Ejemplo:

Declare
ln_cuantos number(6);
tabla varchar2(100);
query varchar2(2000);

begin

tabla:= ' tabla01 '

query := 'select count(*) from ';
query := query || tabla || ' where campo = 1';

execute immediate query into ln_cuantos;

end;

Lo que no estoy seguro es como hacer la declaración para que funcione con un cursor.