Tabla de contenidos
- 19.1. Procedimientos almacenados y las tablas de permisos
- 19.2. Sintaxis de procedimientos almacenados
-
-
19.2.1.
CREATE PROCEDURE
yCREATE FUNCTION
-
19.2.2.
ALTER PROCEDURE
yALTER FUNCTION
-
19.2.3.
DROP PROCEDURE
yDROP FUNCTION
-
19.2.4.
SHOW CREATE PROCEDURE
ySHOW CREATE FUNCTION
-
19.2.5.
SHOW PROCEDURE STATUS
ySHOW FUNCTION STATUS
-
19.2.6. La sentencia
CALL
-
19.2.7. Sentencia compuesta
BEGIN ... END
-
19.2.8. Sentencia
DECLARE
- 19.2.9. Variables en procedimientos almacenados
- 19.2.10. Conditions and Handlers
- 19.2.11. Cursores
- 19.2.12. Constructores de control de flujo
-
19.2.1.
- 19.3. Registro binario de procedimientos almacenados y disparadores
Los procedimientos almacenados y funciones son nuevas funcionalidades de la versión de MySQL 5.0. Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor. Una vez que se hace, los clientes no necesitan relanzar los comandos individuales pero pueden en su lugar referirse al procedimiento almacenado.
Algunas situaciones en que los procedimientos almacenados pueden ser particularmente útiles:
-
Cuando múltiples aplicaciones cliente se escriben en distintos lenguajes o funcionan en distintas plataformas, pero necesitan realizar la misma operación en la base de datos.
-
Cuando la seguridad es muy importante. Los bancos, por ejemplo, usan procedimientos almacenados para todas las oparaciones comunes. Esto proporciona un entorno seguro y consistente, y los procedimientos pueden asegurar que cada operación se loguea apropiadamente. En tal entorno, las aplicaciones y los usuarios no obtendrían ningún acceso directo a las tablas de la base de datos, sólo pueden ejectuar algunos procedimientos almacenados.
Los procedimientos almacenados pueden mejorar el rendimiento ya que se necesita enviar menos información entre el servidor y el cliente. El intercambio que hay es que aumenta la carga del servidor de la base de datos ya que la mayoría del trabajo se realiza en la parte del servidor y no en el cliente. Considere esto si muchas máquinas cliente (como servidores Web) se sirven a sólo uno o pocos servidores de bases de datos.
Los procedimientos almacenados le permiten tener bibliotecas o funciones en el servidor de base de datos. Esta característica es compartida por los lenguajes de programación modernos que permiten este diseño interno, por ejemplo, usando clases. Usando estas características del lenguaje de programación cliente es beneficioso para el programador incluso fuera del entorno de la base de datos.
MySQL sigue la sintaxis SQL:2003 para procedimientos almacenados, que también usa IBM DB2.
La implementación de MySQL de procedimientos almacenados está en progreso. Toda la sintaxis descrita en este capítulo se soporta y cualquier limitación y extensión se documenta apropiadamente. Más discusión o restricciones de uso de procedimientos almacenados se da en Apéndice H, Restricciones en características de MySQL.
Logueo binario para procedimientos almacenados se hace como se describe en Sección 19.3, “Registro binario de procedimientos almacenados y disparadores”.
Los procedimientos almacenados requieren la tabla
proc
en la base de datos
mysql
. Esta tabla se crea durante la
isntalación de MySQL 5.0. Si está actualizando a MySQL 5.0 desde
una versión anterior, asegúrese de actualizar sus tablas de
permisos para asegurar que la tabla proc
existe. Consulte Sección 2.10.2, “Aumentar la versión de las tablas de privilegios”.
Desde MySQL 5.0.3, el sistema de permisos se ha modificado para tener en cuenta los procedimientos almacenados como sigue:
-
El permiso
CREATE ROUTINE
se necesita para crear procedimientos almacenados. -
El permiso
ALTER ROUTINE
se necesita para alterar o borrar procedimientos almacenados. Este permiso se da automáticamente al creador de una rutina. -
El permiso
EXECUTE
se requiere para ejectuar procedimientos almacenados. Sin embargo, este permiso se da automáticamente al creador de la rutina. También, la característicaSQL SECURITY
por defecto para una rutina esDEFINER
, lo que permite a los usuarios que tienen acceso a la base de datos ejecutar la rutina asociada.