Mysql Funciones y Procedimientos almacenados

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introducción

  • Ya vimos en un punto anterior de la WIKI cuales son los permisos que debe poseer un usuario para poder crear, borrar, modificar y ejecutar procedimientos almacenados y funciones.


  • Podemos definir un procedimiento almacenado (store procedure) como un conjunto de órdenes SQL agrupadas bajo el nombre del procedimiento.
De tal forma, que cuando un procedimiento se llama, se ejecutan todas las órdenes SQL del mismo.


  • El uso de los procedimientos puede deberse a varios motivos:
  • Labores administrativas: procedimientos que realizan funciones de chequeo, seguimiento, registro de información que pueda ser relevante para un administrador.
  • Labores de control de acceso a la información de una base de datos.
Utilizar procedimientos almacenados para acceder a los datos de las tablas tiene varias ventajas:
  • Seguridad: El usuario no tiene acceso directo a la tabla por lo que no sabe nada de la misma y no puede realizar operaciones que no estén 'controladas' por el código del procedimiento almacenado.
Impedimos que desde programas 'cliente' se pueda intentar ataques como los de inyección de CSS.
  • Rendimiento: Las sentencias SQL que se encuentran en un procedimiento almacenado ya ha sido 'compiladas' para verificar que no tiene errores sintácticos. Una sentencia SQL enviada directamente por el cliente va a requerir algo más de tiempo que la misma sentencia en un procedimiento almacenado.
  • Conjunto de instrucciones que vamos a necesitar ejecutar varias veces en diferentes días. Podemos agrupar dichas órdenes en un proc. almacenado y llamarlo para que ejecute esas instrucciones y no tener que 'teclearlas' cada vez.


  • Mysql identifica rutinas con procedimientos almacenados y funciones.
Una función (function) es como un procedimiento almacenado, pero a diferencia del mismo, puede 'devolver' un valor escalar (un número) y se puede invocar desde dentro de un comando (por ejemplo dentro de la sentencia SELECT nombre_funcion() ).
Un procedimiento almacenado se invoca con la orden: CALL nombre_proced_almacenado();




Procedimientos almacenados




Funciones











-- Ángel D. Fernández González -- (2017).