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

funciones en oracle

Estas en el tema de funciones en oracle en el foro de Oracle en Foros del Web. hola soy novato en oracle, tengo estas dudas: puedo a traves de una funcion oracle ejecutar un script en el sistema operativo(linux) donde reside la ...
  #1 (permalink)  
Antiguo 06/06/2006, 23:16
 
Fecha de Ingreso: junio-2006
Mensajes: 23
Antigüedad: 17 años, 10 meses
Puntos: 0
funciones en oracle

hola soy novato en oracle, tengo estas dudas:
puedo a traves de una funcion oracle ejecutar un script en el sistema operativo(linux) donde reside la base de datos e insertar la salida (datos) de ese escript en una tabla?

puede el campo de una tabla llenarse automaticamente haciendo uso de una funcion oracle que actue sobre otras tablas?

gracias
  #2 (permalink)  
Antiguo 07/06/2006, 04:35
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 18 años
Puntos: 1
Puedes rellenar datos en tablas utilizando subprogramas (funciones, procedimientos) de oracle metiendo INSERT. Esto se puede hacer. Por ejemplo :

Código:
 
create table PP
(
ID NUMBER,
TXT VARCHAR2(1000)
)
Código:
 
create or replace procedure rellena_pp is
i INTEGER ;
 
begin
 
FOR i IN 1..10 LOOP
 
    INSERT INTO pp VALUES ( i, to_char(i) ) ;
 
END LOOP ;
 
commit work ;
 
end rellena_pp;
Esto generará 10 registros en la tabla PP con los valores del índice utilizado para el bucle .

Para lo otro que preguntas de acceder a scripts del sistema operativo echale un vistazo a la página asktom.com y busca por 'execute command' ahí te salen varios artículos .

Salu2
  #3 (permalink)  
Antiguo 07/06/2006, 04:36
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 18 años
Puntos: 1
Puedes rellenar datos en tablas utilizando subprogramas (funciones, procedimientos) de oracle metiendo INSERT. Esto se puede hacer. Por ejemplo :

Código:
 
create table PP
(
ID NUMBER,
TXT VARCHAR2(1000)
)
Código:
 
create or replace procedure rellena_pp is
i INTEGER ;
 
begin
 
FOR i IN 1..10 LOOP
 
    INSERT INTO pp VALUES ( i, to_char(i) ) ;
 
END LOOP ;
 
commit work ;
 
end rellena_pp;
Esto generará 10 registros en la tabla PP con los valores del índice utilizado para el bucle .

Para lo otro que preguntas de acceder a scripts del sistema operativo echale un vistazo a la página asktom.com y busca por 'execute command'
  #4 (permalink)  
Antiguo 07/06/2006, 07:25
 
Fecha de Ingreso: junio-2006
Mensajes: 23
Antigüedad: 17 años, 10 meses
Puntos: 0
hola, gracias por la respuesta.

aun tnego una duda.
suponiendo que creo la base de datos "colegio" donde tengo las tablas profesores, alumnos y cursos.
unos de los campos de la tabla cursos sera "cantidad de alumnos" y el valor que tenga sera el resultado de la sumatoria de todos los alumnos que en su campo "cursando curso" sea igual al "nombre curso" de la tabla cursos.
entonces mi duda es si se puede hacer una funcion que aga eso y asi ahorrarme hacer una vista q aga lo mismo.
  #5 (permalink)  
Antiguo 07/06/2006, 09:29
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 18 años
Puntos: 1
Wolas,

así de primeras se me ocurre que no necesitarías ese campo totalizador puesto que si tienes bien normalizado tu modelo podrías contar cuantos alumnos tienes en cada curso en una relación entre alumnos y cursos en una tabla a parte.

Sino quieres hacerlo así (lo cual implicaría que tu modelo no estaría normalizado) puedes hacer un trigger de base de datos de manera que cada vez que insertes un alumno en un curso el actualice el totalizador en la tabla de cursos. Para ello te sugiero que pongas el campo 'cursando_curso' como NOT NULL de manera que siempre sea informado y el campo 'total_alumnos' de la tabla cursos siempre esté correctamente informado.

Salu2
  #6 (permalink)  
Antiguo 07/06/2006, 14:05
 
Fecha de Ingreso: junio-2006
Mensajes: 23
Antigüedad: 17 años, 10 meses
Puntos: 0
Cita:
Iniciado por Worp9975
Wolas,

así de primeras se me ocurre que no necesitarías ese campo totalizador puesto que si tienes bien normalizado tu modelo podrías contar cuantos alumnos tienes en cada curso en una relación entre alumnos y cursos en una tabla a parte.

Sino quieres hacerlo así (lo cual implicaría que tu modelo no estaría normalizado) puedes hacer un trigger de base de datos de manera que cada vez que insertes un alumno en un curso el actualice el totalizador en la tabla de cursos. Para ello te sugiero que pongas el campo 'cursando_curso' como NOT NULL de manera que siempre sea informado y el campo 'total_alumnos' de la tabla cursos siempre esté correctamente informado.

Salu2
te entiendo de echo yo pensaba eso mismo, que el total se podia sacar haciendo un select contando los alumnos que tienen el campo curso igual, solo era una duda, estoy aprendiendo a modelar.

la otra duda que tenia, sobre la funcion que lee datos de un archivo del sistema operativo, mi idea es ir guardando en una tabla las temperaturas registradas cada una hora en mi localidad.
para hacer esas inserciones oracle tendria q ejecutar un script el cual devuelve la temperatura, y en la misma tabla en otro campo insertar la hora y fecha donde registro esa temp usando sysdate
  #7 (permalink)  
Antiguo 07/06/2006, 14:05
 
Fecha de Ingreso: junio-2006
Mensajes: 23
Antigüedad: 17 años, 10 meses
Puntos: 0
Cita:
Iniciado por Worp9975
Wolas,

así de primeras se me ocurre que no necesitarías ese campo totalizador puesto que si tienes bien normalizado tu modelo podrías contar cuantos alumnos tienes en cada curso en una relación entre alumnos y cursos en una tabla a parte.

Sino quieres hacerlo así (lo cual implicaría que tu modelo no estaría normalizado) puedes hacer un trigger de base de datos de manera que cada vez que insertes un alumno en un curso el actualice el totalizador en la tabla de cursos. Para ello te sugiero que pongas el campo 'cursando_curso' como NOT NULL de manera que siempre sea informado y el campo 'total_alumnos' de la tabla cursos siempre esté correctamente informado.

Salu2
te entiendo de echo yo pensaba eso mismo, que el total se podia sacar haciendo un select contando los alumnos que tienen el campo curso igual, solo era una duda, estoy aprendiendo a modelar.

la otra duda que tenia, sobre la funcion que lee datos de un archivo del sistema operativo, mi idea es ir guardando en una tabla las temperaturas registradas cada una hora en mi localidad.
para hacer esas inserciones oracle tendria q ejecutar un script el cual devuelve la temperatura, y en la misma tabla en otro campo insertar la hora y fecha donde registro esa temp usando sysdate
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 19:05.