Funciones
Funciones
Funciones
Sintaxis oficial
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
Parámetros de entrada
En una función todos los parámetros son de entrada, por lo tanto, no será
necesario utilizar la palabra reservada IN delante del nombre de los parámetros.
Resultado de salida
Una función siempre devolverá un valor de salida asociado al nombre de la
función. En la definición de la cabecera de la función hay que definir el tipo de dato
que devuelve con la palabra reservada RETURNS y en el cuerpo de la función
debemos incluir la palabra reservada RETURN para devolver el valor de la
función.
Ejemplo:
DELIMITER $$
DROP FUNCTION IF EXISTS xxxxx$$
CREATE FUNCTION xxxxx (par VARCHAR(50)) RETURNS INT UNSIGNED
...
BEGIN
...
RETURN total;
END
$$
Características de la función
Después de la definición del tipo de dato que devolverá la función con la palabra
reservada RETURNS, tenemos que indicar las características de la función.
Las opciones disponibles son las siguientes:
DETERMINISTIC:
NOT DETERMINISTIC:
CONTAINS SQL:
NO SQL:
DETERMINISTIC
NO SQL
READS SQL DATA
DELIMITER $$
DROP FUNCTION IF EXISTS contar_productos$$
CREATE FUNCTION contar_productos(gama VARCHAR(50))
RETURNS INT UNSIGNED
BEGIN
DELIMITER ;
SELECT contar_productos('Herramientas');