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

Dudas stored procedures

Estas en el tema de Dudas stored procedures en el foro de Bases de Datos General en Foros del Web. Buenas, UNA Tengo algunas dudas sobre los stored procedures, a diferencia de los triggers que tengo claro que son "disparadores" los SP (stored procedures) son ...
  #1 (permalink)  
Antiguo 15/01/2010, 16:32
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Dudas stored procedures

Buenas,

UNA
Tengo algunas dudas sobre los stored procedures, a diferencia de los triggers que tengo claro que son "disparadores" los SP (stored procedures) son simples consultas SQL que se guardan en la propia base de datos y por tanto son más rápidas que ejecutar la consulta a "pelo"? se nota realmente la diferencia?

Segun la wiki
Un procedimiento almacenado (stored procedure en inglés) es un programa (o procedimiento) el cual es almacenado físicamente en una base de datos. Su implementación varía de un manejador de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.

DOS
He marcado en negrita lo que me interesa, el motor de la base de datos corre por separado de la web? en ese caso si tendría sentido los stored procedures, pero si corren en la misma máquina, dejaría de tenerlo?

TRES
Luego he leído que mysql soporta tanto stored procedures como triggers, correcto?

CUATRO
Y que para ejecutar los stored procedures de mysql en php se ha de trabajar con mysqli?

CINCO
La penúltima duda (tonta), los stored procedures pueden ser simples select's que devuelven información no? es que he visto varios stored procedures en mi trabajo que son bastante grandes, con inners joins entre tablas y tal, pero lo único que hacían era hacer un select gigante.

SEIS
¿Puede ser que la diferencia entre el stored procedured y las vistas (views) es que las vistas están creadas y son fijas y los stored procedures son dinámicos?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 15/01/2010, 16:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Dudas stored procedures

1) Un stored procedure no es exactamente una consulta almacenada que se ejecuta en el servidor, eso sería una VIEW. Un SP es un script que puede contener una o más sentencias, controladores de flujo, derivadores, iteradores, handlers de eventos y llamadas a otras funciones o SP, todo lo cual realiza una tarea o conjunto de tareas que se han programado como un todo único (atómico).
El objetivo y principal uso de los SP es la realización de tareas estandarizadas que requieren una rutina preestablecida de pasos.

2) Los SP residen como scripts en una base de datos, independientemente de si esta está o no en web. Pero corren en el ambiente de trabajo del motor de la base de datos, y dentro de sus recursos. Este hecho hace que sólo hay dos momentos en que el SP tiene relación con la aplicación que lo invoca: Cuando el DBMS recibe la petición, y cuando emite el resultado final, si lo tiene. Mientras, todas las operaciones definidas en él son independientes de la voluntad y acción del usuario.

3) MySQL soporta los SP, SF y TRIGGERS desde la versión 5.0.

4) Para ejecutar los SP desde PHP se los debe invocar con su sentencia específica ("CALL nombredelSP"), desde cualquier mysql_query usable. Simplemente creas la sentencia como creas un SELECT, conservando las reglas de sintaxis que corresponden a un SP.

5) Ya te lo respondí en el punto 1.

6) Ambos, tanto el SP como las VIEW son estáticas. Lo que son dinámicos son los parámetros que uno u otro puedan recibir. En ese sentido, una VIEW es una tabla virtual, por lo que no sólo es posible invocarla con un "SELECT * FROM ...". Si parametrizas el SELECT, actúa de la forma que desees, en tanto respetes su tabla resultado.
a una VIEW, incluso, puedes invocarla como parte de un INNER JOIN de otra consulta, cosa que no puedes hacer con un SP...

Para ver mejor el detalle, es mejor (como siempre) acudir al manual de referencia: Capítulo 19. Procedimientos almacenados y funciones
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/01/2010, 17:28
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Dudas stored procedures

Excelente explicación, muchas gracias maestro gnzsoloyo

Etiquetas: procedures, stored
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 23:29.