elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Análisis del vídeo del hackeo al Sindicato de los Mossos de Esquadra


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Problema ORACLE procedimiento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema ORACLE procedimiento  (Leído 379 veces)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.053


Ingeniería inversa / MASM


Ver Perfil WWW
Problema ORACLE procedimiento
« en: 25 Noviembre 2015, 21:12 »

Hola a todos, tengo el siguiente procedimiento:

Código
  1. CREATE OR REPLACE PROCEDURE ordenarFicha
  2. IS
  3.  -- Declaracion de variables locales
  4.  CURSOR cur_ficha IS SELECT * FROM ficha;
  5.  reg_ficha ficha%ROWTYPE;
  6.  var_anio_actual NUMBER(4);
  7.  var_anio_ficha NUMBER(4);
  8.  var_diferencia_anio NUMBER(4);
  9. BEGIN
  10.  -- Sentencias
  11.  var_anio_actual := EXTRACT(YEAR FROM SYSDATE);
  12.  
  13.  OPEN cur_ficha;
  14.  
  15.  LOOP
  16. FETCH cur_ficha INTO reg_ficha;
  17. EXIT WHEN cur_ficha%NOTFOUND;
  18. var_anio_ficha := EXTRACT(YEAR FROM reg_ficha.fecha);
  19.    var_diferencia_anio := (var_anio_actual - var_anio_ficha);
  20.  
  21.    IF var_diferencia_anio > 5 THEN
  22.      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)';
  23.    END IF;
  24.    DBMS_OUTPUT.PUT_LINE(reg_ficha.nombre);
  25. END LOOP;
  26.  
  27.  CLOSE cur_ficha;
  28.  
  29. EXCEPTION
  30.    WHEN OTHERS THEN
  31.      IF SQLCODE = -955 THEN
  32.        NULL; -- suprime la excepción ORA-00955
  33.      ELSE
  34.         RAISE;
  35.      END IF;
  36. 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.


En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.718


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: Problema ORACLE procedimiento
« Respuesta #1 en: 26 Noviembre 2015, 20:04 »

Es solo una idea, pero según el contenido de la tabla ficha ¿no estarías ejecutando varias veces CREATE TABLEs idéndicos?

No creo que solo haya un registro por año en la tabla ficha, si hay por ejemplo 2 registros que sean del 2009 estarías ejecutando CREATE TABLE FICHA_2009 dos veces, y la 2da fallará.

No estoy seguro en ORACLE pero deberías poder hacer un CREATE TABLE IF NOT EXISTS como un workaround para esto, pero la solución verdadera estaría en replantearse cómo haces lo que intentas hacer.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con un procedimiento en Oracle
Programación General
wennam 4 4,708 Último mensaje 20 Enero 2009, 16:22
por ^Tifa^
[ASM] Problema con llamada a procedimiento
Programación General
[Zero] 3 1,468 Último mensaje 28 Marzo 2009, 20:52
por Eternal Idol
PROBLEMA TRIGGERS ORACLE SQL
Bases de Datos
rixi15 1 1,414 Último mensaje 23 Mayo 2012, 16:57
por Saberuneko
problema con oracle 10g en windows 7
Dudas Generales
george3010 0 435 Último mensaje 25 Enero 2013, 18:21
por george3010
[Oracle] Procedimiento que muestra una tabla
Bases de Datos
sherry_XD 0 448 Último mensaje 8 Abril 2015, 22:03
por sherry_XD
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines