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

storde procedure ¿ventajas?

Estas en el tema de storde procedure ¿ventajas? en el foro de Mysql en Foros del Web. Hola, hace unos dias estoy trabajando en una aplicacion que usa mysql, pero me comentaron esto de los stored procedure, pero aun no entiendo muy ...
  #1 (permalink)  
Antiguo 07/06/2008, 11:39
 
Fecha de Ingreso: septiembre-2003
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 3
storde procedure ¿ventajas?

Hola, hace unos dias estoy trabajando en una aplicacion que usa mysql, pero me comentaron esto de los stored procedure, pero aun no entiendo muy bien que son, no se si alguien me puede dar una idea o una pagina en la que se hable de ello y de como integrarlo con php
__________________
Aplitec
  #2 (permalink)  
Antiguo 07/06/2008, 11:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: storde procedure ¿ventajas?

Hola, en la documentación de Mysql tienes info de los procedimientos almacenados.

Si sabes programar, para que te hagas una idea, es un procedimiento que se encuentra en base de datos, por lo que cualquiera que tenga acceso a la base de datos y tenga permisos lo puede ejecutar, se encuentra precompilado y es, por lo tanto, más rapido que tener la "lógica" de lo que quieras hacer en un código php e ir lanzando querys.

Un saludo,
  #3 (permalink)  
Antiguo 07/06/2008, 11:53
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: storde procedure ¿ventajas?

Definición básica:
Los store procedures (SP) son scripts con secuencias de sentencias SQL que permiten realizar una serie prefijada de procesos para obtener un resultado determinado, el que puede ser la obtención de valores o la manipulación de tablas.
Con scripts tienen la diferencia de ser parametrizables, por lo que no solamente se les puede indicar con qué valores se trabajará, sino también qué tipo de valores se podrían obtener de ellos.
Como son secuencias, en definitiva son "programas" realizados en SQL y se cuenta con cierto tipo de sentencias que solamente pueden operar dentro de ellos, tales como los controladores de flujo IF/THEN/ELSE END IF; CASE/WHEN ... THEN/END CASE, REPEAT /LEAVE END REPEAT y otros más.
También por medio de ellos se puede realizar el barrido registro a registro de una tabla, para lo cual se definen elementos de tipo CURSOR, y HANDLERS de proceso de tablas.
Pero uno de los elementos más importantes es que a través de ellos, en las tablas InnoDB, se puede acceder a la implementación de TRANSACTIONS y recuperación de problemas en las transacciones.
Finalmente, y no menos importante, es una de las mejores formas de evitar que la base sea sometida a ataques por SQL injection, ya que al sólo permitir el ingreso de parámetros, si el contenido de los parámetros no se ajusta a los valores esperados no puede ejecutarse. En vez de ello, si lo que la base espera es el envío de una sentencia (las query que usualmente usas en PHP), y la conexión es hakeada, ¿te imaginas el tipo de problemas que se puede producir?

Los SP no existen como sentencias, sino que son creados por un script y pertenecen a UNA base de datos. Una vez que se lo crea, sigue existiendo mientras no se lo borre o modifique.
Se lo convoca con una sentencia "CALL NombreSP(param1, param2, param3, ...paramN)". Puede hacerse que devuelva un valor en la misma variable, o bien que devuelva un resultado como tampo de una tabla o una tabla, al igual que un SELECT común y silvestre. Cuando usas programación en .NET puedes usar un conector propio de MySQL, el que tiene un control más avanzado sobre las parametrizaciones de las sentencias de SQL.
Yo habitualmente uso los SP cuando debo realizar una serie compleja de pasos que requeriría varios llamados a la base con diferentes sentencias; de esa forma, lo llamo una sola vez y que el SP se encargue del resto.
tengo SP que tienen una media docena de líneas de código, y SP que tienen más de 500. Hay uno de ellos al que envío tres parámetros y con ellos realiza un script de actualizacion a una tabla según los datos que compila a través de un SELECT con 8 subconsultas anidadas, otras unidas y algunos cuantos JOIN con uso de funciones almacenadas y funciones de MySQL. Todo el proceso me insumiría a través de sentencias sucesivas al menos un minuto y medio. Descargarle esa tarea a la base, hace que todo el proceso, en el peor escenario, dure alrededor de 15 segundos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/06/2008 a las 12:02
  #4 (permalink)  
Antiguo 07/06/2008, 13:59
 
Fecha de Ingreso: septiembre-2003
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 3
Respuesta: storde procedure ¿ventajas?

Gracias por sus respuestas, tengo una duda aun, si es un script, en donde puedo alojarlo dentro de mi servidor, o hay alguna extension de PhpMyAdmin que me ayude con esto???
__________________
Aplitec
  #5 (permalink)  
Antiguo 07/06/2008, 14:09
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: storde procedure ¿ventajas?

No has entendido en detalle.
En esencia es un script, pero se crea con una sentencia específica y con un conjunto específico de instrucciones:
Código:
CREATE PROCEDURE NombreProc(IN Param1 INT, 
INOUT param2 CHAR(8), OUT param3 DATETIME)
BEGINS
/*Cuerpo del procedure */
...sentencias ...
END;
En este caso te estoy mostrando un SP que tiene tres parámetros (puede no tener ninguno), uno entero de entrada, uno char de entrada-salida, y uno datetime de salida.
El cuerpo del procedure se encuentra entre el BEGIN y el END.
Como el SP pertenece, como te dije, a UNA BASE DE DATOS, queda cargado en ella SIEMPRE, hasta que se lo borre. SIEMPRE está accesible (en tanto el usuario tenga permisos de EXECUTE). No se guarda aparte JAMÁS.
Si lo vas a programar directamente en consola hay algunas reglas que puedes leer en: 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)
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 16:40.