Código
CREATE OR REPLACE PROCEDURE ordenarFicha IS -- Declaracion de variables locales CURSOR cur_ficha IS SELECT * FROM ficha; reg_ficha ficha%ROWTYPE; var_anio_actual NUMBER(4); var_anio_ficha NUMBER(4); var_diferencia_anio NUMBER(4); BEGIN -- Sentencias var_anio_actual := EXTRACT(YEAR FROM SYSDATE); OPEN cur_ficha; LOOP FETCH cur_ficha INTO reg_ficha; EXIT WHEN cur_ficha%NOTFOUND; var_anio_ficha := EXTRACT(YEAR FROM reg_ficha.fecha); var_diferencia_anio := (var_anio_actual - var_anio_ficha); IF var_diferencia_anio > 5 THEN EXECUTE IMMEDIATE 'CREATE TABLE FICHA_' || TO_CHAR(var_anio_ficha) || '(ID_FICHA int primary key, NOMBRE VARCHAR2(60 BYTE), APELLID VARCHAR2(60 BYTE), FECHA DATE)'; END IF; DBMS_OUTPUT.PUT_LINE(reg_ficha.nombre); END LOOP; CLOSE cur_ficha; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -955 THEN NULL; -- suprime la excepción ORA-00955 ELSE RAISE; END IF; END ordenarFicha;
El problema que me surge es que al ejecutar este, no selecciona todas las filas (SELECT *) de la tabla ficha, pero cuando comento EXECUTE INMEDIATE, si selecciona todo, me baso en la salida de DBMS_OUTPUT.PUT_LINE(reg_ficha.nombre);
espero que alguien me pueda ayudar, saludos.