Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

procedimiento temporizado en oracle

Estas en el tema de procedimiento temporizado en oracle en el foro de Oracle en Foros del Web. Hola amigos les comento que tengo actualmente una tabla con 4 campos donde guardo algunos avisos create table avisos( id number, --identificador del aviso estado ...
  #1 (permalink)  
Antiguo 11/10/2009, 21:50
 
Fecha de Ingreso: febrero-2007
Ubicación: Ecuador
Mensajes: 23
Antigüedad: 17 años, 9 meses
Puntos: 0
Sonrisa procedimiento temporizado en oracle

Hola amigos les comento que tengo actualmente una tabla con 4 campos donde guardo algunos avisos
create table avisos(
id number, --identificador del aviso
estado varchar2(1 byte), -- estado del registro, si el valor es '1' el registro es activo (valor por defecto),
--si toma el valor '2' el registro no esta áctivo
fechainicio date, -- fecha de inicio de publicación del aviso
fechahasta date, -- fecha final de publicación del aviso
valor varchar2(500 byte) --contenido del aviso
)
pues lo que deseo hacer es cambiar automaticamente (ya sea haciendo uso de un trigger o algo más) el valor del campo 'estado' de '1' a '2' justo cuando la fecha de publicación límite del aviso (indicada por el campo 'fechahasta' ) . En resumen cuando se crea un registro de la tabla aviso el campo 'estado' toma el valor '1' que indica que el aviso esta activo , este valor debe mantenerse solo en el intervalo de tiempo indicado entre la fecha de inicio(campo fechainicio) y la fecha final (campo fechahasta), cuando el intervalo haya sido superado el valor del campo 'estado' debe cambiar a '2'.
La verdad es que no tengo idea de como implementar esto automaticamente sin que el usuario tenga que ejecutar manualmente algún proceso de verificación en la base de datos, espero sus opiniones

salu2 from Ecuador
  #2 (permalink)  
Antiguo 12/10/2009, 13:11
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 1 mes
Puntos: 85
Respuesta: procedimiento temporizado en oracle

No guardes el valor estado en la tabla, es un valor que debe ser calculado al momento de ejecutar cada consulta, intenta este ejemplo a ver si te sirve.

Código:
SQL> select * from avisos;

        ID FECHAINI FECHAHAS VALOR
---------- -------- -------- ----------
         1 10/10/09 14/10/09 aviso 1
         2 10/10/09 12/10/09 aviso 2

SQL> r
  1  select
  2  id,
  3  fechainicio,
  4  fechahasta,
  5  valor,
  6  case when
  7    sysdate between fechainicio and fechahasta then 1
  8    else 2 end estado
  9* from avisos

        ID FECHAINI FECHAHAS VALOR      ESTADO
---------- -------- -------- ---------- ------
         1 10/10/09 14/10/09 aviso 1         1
         2 10/10/09 12/10/09 aviso 2         2
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:10.