sábado, 5 de abril de 2008

Diferencia entre un trigger o disparador y un procedure o procedimiento

Las diferencias entre estos dos objetos las podemos ver si definimos que hacen cada uno.

PROCEDIMIENTO

El procedimiento se puede ejecutar:

  1. de manera directa desde el SQL
  2. desde una aplicacion
  3. desde otro procedimiento

Los procedimientos sirven:

  1. Simplificar desarrollo de aplicaciones
  2. Mejorara el rendimiento de las BBDD(esta precompilado)
  3. Encapsular las operaciones que efectuan las BBDD(el programador no debe de recordar todas las instrucciones sino que un prodecimiento con unos valores da un servicio )

El procedimiento puede devolver valores, se pueden capturar errores, puede crear variables, bucles, etc....

DISPARADOR

Un disparador es una accion que se ejecuta en un momento dado.

Por ejemplo, cada vez que se cree un usuario, revisar que no este creado ya en la tabla usuarios y usuarios-eliminados.Si usuarios tiene una clave primaria, seguramente al dar de alta, nos avisara al ahber repeticiones, pero no a causa de una revision como la que queremos, sino por un duplicado.

Pongamos otro ejemplo, cda vez que el stock sea menor que 50, comprar 100 unidades.Si cada vez que hacemos una accion en la que modificamos el stock, tenemos que crear un trozo ed codigo que haga una revision, estara este codigo esturreado por el codigo.Tampoco es efectivo un programa que vaya revisando constantemente el stock que hay y lo incremente si es necesario, ya que este programa puede molestarnos a causa del tiempo que necesita.

Para esto esta el disparador. Cada vez que se modifique el stock, tiene una accion anterior y posterior en la cual permite o no, resta stock o lo añade segun convenga. Pero hay que tener en cuenta de que este disparador esta escrito una sola vez ne la tabla de stock.

Cuando se crean los diaparadores:

Implementacion d e una regla de negocio(como las anteriores).

Mantenimiento de una auditoria(cada vez que cambia algo, se registra en otra tabla)

Mantenimiento de columnas derivadas(una columna a veces depende de otras 2)

Comprobaciones de restricciones de integridad del estilo "no se puede bajar un sueldo", que aunque la tabla sueldos, si admite un sueldo inferior, no se puede restar a un empleado, oea, que una regla no puede hacer que el siguiente valor nos de un valor inferior que el anterior.

Reparacion de restricciones de integridad.Se trata de devolver el valor del sueldo modificado erroneamente

Definicion de trigger y procedure

En este documento voy a intentar definir un trigger y un procedure, oe d otra manera, un disparador o un procedimiento

Asi a bote pronto puedo decir lo siguiente:

Procedimiento:Conjunto de acciones definidas por un usuario que proporcionan un servicio. Una vez creados, se incorporan a la base de datos como un objeto mas.Generalmente se usan para automatizar areas. Pueden ser llamados directamente, desde un programa ajeno, o desde otro procedimiento.

Disparador:Son acciones que se ejecutan para el propio mantenimiento de la base de datos o para definir reglas de negocio.
Por ejemplo, para, en la tabla de stock, cada vez que compremos mas material, queremos que se nos guarde en otra tabla la cantidad antes de comprar y la posterior una vez actualizada.
Otro ejemplo, cada vez que un alumno se matricule de una asignatura, comprobar que no ha excedido el numero de convocatorias permitidas.

jueves, 14 de febrero de 2008

viernes, 28 de diciembre de 2007

consulta de fechas de una tabla

Parea hacer una consulta de una tabla donde queramos comparar fechar o buscar un rango no se puede hacer con > o > o = porque el campo DATE no es numerico.
Se puede hacer asi
SELECT * FROM ordenes WHERE fecha_registro BETWEEN '10/06/2006' AND '16/06/2006'

Estadisticas con Oracle

Veamos como generar estadisticas del Oracle para verle un poco como funciona.

Para borrar estadisticas
SQL> EXEC DBMS_STATS.DELETE_INDEX_STATS('usuario','clave primaria');

Para crearlas
begin
DBMS_STATS.GATHER_SCHEMA_STATS (ownname => 'powerg',estimate_percent => 100);
end;

Analizar datos de una tabla
ANALYZE TABLE tablaaanalizar COMPUTE STATISTICS;

Analizar indices
ANALYZE INDEX indiceaanalizar COMPUTE STATISTICS;


recoger los datos del analisis
SELECT * FROM user_indexes;
SELECT * FROM user_tables;

se pueden seleccionar algunas columnas i tambien haer calculos con ellas

viernes, 14 de diciembre de 2007

domingo, 2 de diciembre de 2007

una funcion de complejos


No veas como me costo, tanto porque no veia los complejos, como qpor la hora a la que lo hice.
Ea, aqui esta

viernes, 30 de noviembre de 2007

una integral con complejos


una integral con complejos

viernes, 23 de noviembre de 2007

una de fourier


y la solucion de lo que creo es el 3b

jueves, 22 de noviembre de 2007

pulso rectangular


Señales y sistemas analogicos. Pulso rectangular

salida slit


Os presento una salida SLIT

martes, 20 de noviembre de 2007

Funcion de transferencia de un filtro

Creo que esto es una funcion de transferencia de un filtro pasaalto donde la zona de transicion va de 2KHz a 6 KHz y la ganancia maxima es de G=4, que supongo que es la altura hasta donde puede llegar |H(w)|


domingo, 18 de noviembre de 2007

uso de recover con oracle

Parce ser que cuando intentaba levantar mi base de datos Oracle me daba un error ora 0600. se resuelve con recover como indica esta pagina

Parar y arrancar Base de datos Oracle

Un enlace a una pagina dond se explica muy bien como arrancar y parar una base de datos Oracle. Me ha salvado de una buena :-D

http://www.orasite.com/tutoriales/arranque-y-parada-base-de-datos-oracle.html

jueves, 8 de noviembre de 2007

Integral por partes

Como es de esperar, el ejercicio anterior esta mal y ahora he llegado a este punto





En esta integral se debe de modificar (e^x) -1 por t ^2

Veamos como yo creio que se resuelve, pero me parece extraña

lunes, 5 de noviembre de 2007

lunes, 29 de octubre de 2007

Añadir columna a una table con LATER TABLE

Para añadir una columna a una tabla se hace asi
alter table "table_name" add ("nombre_columna" NUMBER(2,0) NULL)
Mas informacion aqui

dar permisos a varios usuarios con CREATE ROLE

Cuando queremos dar los mismos permisos a un grupo de usuarios, se suelen crear roles y asignar esos roles a los usuarios. todos tendrasn las mismas prioridades.
CREATE ROLE role_name;
mas informacion aqui

Para borrar ese mismo rol
DROP ROLE role_name;


Para dar permisos a ese rol se hace
GRANT permisos_ a_conceder TO role_name;
GRANT role_name TO user1,user2;
Este comando aun no me ha funcioando, asi que.....a leer tocan.

Para borrar esos permisos con REVOKE. Mas info aqui

Crear y borrar usuarios con oracle CREATE USER y DROP

Para crear un nuevo usuario que pueda acceder a nuestra base de datos y acceder a las tablas con los permisos que queramos, se hace mediante el siguiente comando.

CREATE USER user1 IDENTIFIED BY passwd1; Mas informacion aqui

Para borra un usuario se hace mediante el siguiente comando:
DROP USER user1;

Mas informacion aqui