Facebook Google+


Procedimientos almacenados en MySQL
#1
Amigos... para que podria querer usar procedimientos almacenados? alguna forma de aprenderlos? que molesto soy, no? Smile gracias!
 
Reply
#2
Bueno, te dejo un ejemplo de algo que he probado para hacer el INSERT a una tabla colores, lo cual es un ejemplo demasiado simple... pero sirve para ver la sintaxis, no asi la necesidad de uso:

Código:
DELIMITER $$

CREATE  PROCEDURE `new_color`(
                                in nombre varchar(45),
                                in codigo varchar(2),
                                in estado tinyint
                            )
BEGIN
    INSERT INTO colores
    VALUES (null, nombre, codigo, estado);
END

Y con eso simplifico mi modelo ya que muevo las sentencias SQL por ejemplo de creacion de registros (INSERT INTO) a la propia base de datos, ahora lo unico que haria por ejemplo desde PHP o incluso desde cualquier otro lenguaje es llamar al procedimiento almacenado (SP) con los parametros:

Código:
call new_color('cyan','cy',1)

Todo lo hago desde MySQL WorkBench que me simplifica bastante las cosas al corregirme errores de sintaxis, aqui algunas capturas de pantalla:



Las llamadas a los SP se pueden probar desde la pestana 'Query' como se ve aqui:

 
Reply
#3
y la utilidad real amigo ?
 
Reply
#4
Un amigo me preguntaba:

Cita:Sería más rápido que procesar la consulta con PHP?

Mi respuesta:

Tiene sentido cuando el SP hace operaciones sobre varias tablas ...y/o cuando hay cierta logica... porque pasa de estar escrita por ejemplo en PHP a en MySQL y ser por ende PORTABLE entre distntis leguajes de programacion que accedan a esa DB:
ya no tienes que traducir ese codigo en PHP a Java o Python Tongue

Estructuras de control como IF... o.. CASE ... quedan dentro del SP
 
Reply
#5
Me surge la duda de que pasa cuando usas un framework y tu no escribes de todas formas sentencias SQL en tu modelo sino hay un ORM que genera las consultas. En ese caso ??? como introducirias los SP? aplican?
 
Reply
#6
No podrias utilizar un ORM (excepto....) y la cuestion se vuelve mas "procedimientos almacenados vs. ORMs" y entre las cosas que tambien debes tener en cuenta es que tu escribes SP para un dialecto de SQL en particular y eso "parte sobre el eje" al ORM ya que no podrias hacer un switch entre distintos drivers de RDBMS como MySQL, SQL Server, Oracle, etc...

* Excepto el ORM sea capaz de gestionar los procedimientos almacenados Smile
 
Reply
#7
Los SP dan una seguridad "extra" y en ese sentido son muy utiles sobre todo para aplicaciones empresariales
 
Reply
#8
El problema con los SP es que te casas con un solo proveedor de base de datos, algo muy común en las aplicaciones empresariales.
Depend on abstractions, not on concretions.
Laraveles

 
 
Reply
#9
(04-09-2017, 10:22 PM)Herminio Heredia escribió: El problema con los SP es que te casas con un solo proveedor de base de datos, algo muy común en las aplicaciones empresariales.

Cierto, estaba viendo eso justamente: consultoras grandes como Globant o SoftTek (que tienen casi el 80% de sus proyectos en .NET / Java por ejemplo) te piden manejes todo con Vistas y Procedimientos almacenados pero AMBOS dependen del dialecto de SQL.
 
Reply
  


Salto de foro:


Browsing: 1 invitado(s)