Ir al contenido


Foto

Para que se usan los Procedimientos Almacenados y las Vistas?


  • Por favor identifícate para responder
4 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 18 septiembre 2010 - 10:59

Hola a todos
Despues de tanto tiempo trabajando con Access, al empezar con MySQL me encuentro con estos terminos nuevos (Procedimientos Almacenados y Vistas), que no se como usarlos

Quisiera que me explicaran que son y para que sirven?
Cuando es que se usan?
:huh:
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 18 septiembre 2010 - 11:45

Mira este enlace, responde a todas tus dudas solo que está en inglés

Salud OS
  • 0

#3 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 18 septiembre 2010 - 11:59

Buenas,

Cuando empecé con Interbase me encontré con las mismas preguntas, de hecho estuve tiempo sin usarlos porque no sabía qué me podían aportar.

Luego llegó un día en el que tuve ciertas necesidades y, pensando cómo hacerlo y lo que se me llegaba a complicar el aplicativo Delphi, preguntando cómo solucionarlo vi que la solución más fácil y eficaz era hacer trabajar el motor de base de datos haciendo que intervinieran en ese uso los mencionados procedimientos almacenados y vistas.

¿Para qué sirven? Pues bueno, los SP (Stored Procedures) para mi es un mecanismo de llegar a las facilidades que nos da el motor de base de datos. Por ejemplo, en Firebird tenemos la instrucción update or insert específica del lenguaje DML. En una sola instrucción hago dos acciones, si el registro existe, lo modifica, sino, lo inserta. En Delphi tendría que hacer primero un SQL para saber si existe, y, según el caso, realizar otro SQL de insert o update.

Ahora imagina un listado de un programa que, para poderlo realizar tengas que crear una tabla en memoria la cual se cargue mediante diversas sentencias SQL. Por cada una de las sentencias que lanzas y procesas, se genera una comunicación con el servidor. ¿Y si en su lugar hacemos un SP que se encargue de devolver esos registros? Con eso ganamos tráfico (= velocidad) y uso de memoria (podemos imprimir directamente el listado sin cargar los registros en memoria)

En el caso de las vistas, la verdad es que las he usado poco y, los casos en las que la he usado es cuando tengo una sentencia SQL muy compleja (varias subselect y/o cases y/o........) de la que me gustaría obtener información como poder hacer un count(*), un sum de un campo,...... que si no la tuviera en una "tabla" (una vista para el programador se ve como una tabla cualquiera) sería incapaz de hacer o se complicaría muchísimo más la cosa.

Espero haberte ayudado

Nos leemos

  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 septiembre 2010 - 12:30

Hola,

Los SP son rutinas programadas para una base de datos. Estas rutinas permiten realizar algunas operaciones sobre las tablas a fin de insertar, actualizar y/o eliminar registros.
Esto permite realizar algunas operaciones que normalmente realizaríamos en el lado del Cliente se realizaran en el servidor ganando tiempo y simplicidad.
Muchas de las rutinas que tienen que ver a nivel de negocio, y para el manejo de consistencia de datos, se puede llevar a cabo con los SP.

Por ejemplo: se puede disponer de un SP para que realice consultas de stock y llene la tabla de pedidos en caso de haber faltantes. El SP se encargaría de revisar cada registro devuelto por la consulta sobre la tabla stocks (por darle un numbre) y si al evaluar el valor del campo Cantidad se detecta que es inferior o cercano al campo MinimoDisponible se proceda con una instrucción INSERT sobre la tabla Pedidos con los datos de dicho artículo.

Hagamos de cuenta que esta actividad se lleva a cabo en el negocio 2 o 3 veces al día. Podemos programar en el cliente para que a ciertas horas se ejecute (que no es más que una llamada al servidor) el SP. Algunos motores de base datos ofrecen mecanismos automáticos para la ejecución de SP como es el caso de Oracle (desconozco si MySQL tiene algo parecido).
O se puede hacer uso de triggers sobre alguna tabla para que ejecute un SP.

¿Se aprecia más o menos la idea?

Las vistas son consultas SELECT ya armadas y alojadas en el servidor. La ventaja de éstas es que el cliente no tiene que estar preparando la consulta dinámicamente (o estar en tiempo de ejecución) almacenada en los dataset. El componente sólo tiene que mandar a llamarla.
Además se pueden hacer cosas como éstas:



sql
  1. SELECT Campos FROM VISTA1
  2. WHERE ...
  3. ORDER BY ...



Aunque, no todos los motores permiten el ordenamiento y filtrado de una vista (y algunas opciones de uniones, entre otras cosas). Se supone que en teoría la vista es una consulta estática.

Lo cual permite cierto dinamismo, sin alterar la consulta original que tiene la vista.
Las vistas son una buena opción para generar los informes. Algunos informes son fijos y no requieren de un armado previo de la consulta... que mejor que tener armada la consulta en el motor y hacer simplemente esto:



sql
  1. SELECT * FROM VISTA_REPORTE



En el reporteador.

Espero que esto te permita tener más claro las cosas.

Saludos,
  • 0

#5 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 20 septiembre 2010 - 09:39

Muchas gracias a todos por sus respuestas
Ya voy entendiendo lo que son  (y)
  • 0




IP.Board spam blocked by CleanTalk.