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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  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 1,981 veces)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


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

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.762


Nos reservamos el derecho de ban.


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

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





Dominio en venta: https://forojapones.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema "procedimiento sub o function no definido"
Programación Visual Basic
.:UND3R:. 4 6,930 Último mensaje 15 Junio 2011, 20:41 pm
por .:UND3R:.
PROBLEMA TRIGGERS ORACLE SQL
Bases de Datos
rixi15 1 2,761 Último mensaje 23 Mayo 2012, 16:57 pm
por Saberuneko
problema con oracle 10g en windows 7
Dudas Generales
george3010 0 1,414 Último mensaje 25 Enero 2013, 18:21 pm
por george3010
[html][php][oracle] Problema con ejercicio
PHP
<Brit> 2 2,108 Último mensaje 10 Abril 2013, 23:45 pm
por l337*
[Oracle] Procedimiento que muestra una tabla
Bases de Datos
sherry_XD 0 1,939 Último mensaje 8 Abril 2015, 22:03 pm
por sherry_XD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines