Funciones Mysql
Funciones Mysql
Funciones Mysql
Una función almacenada es un programa almacenado de tipo especial que devuelve un solo
valor. Normalmente, utiliza funciones almacenadas para encapsular fórmulas comunes o
reglas comerciales que son reutilizables entre sentencias SQL o programas almacenados.
instrucciones.
A continuación se ilustra la sintaxis básica para crear una nueva función almacenada:
1 DELIMITER $$
4 param1,
5 param2,…
6 )
7 RETURNS datatype
8 [NOT] DETERMINISTIC
9 BEGIN
10 -- statements
11 END $$
12
13 DELIMITER ;
En esta sintaxis:
En primer lugar , especifique el nombre de la función almacenada que desea crear después de
las CREATE FUNCTION palabras clave.
En segundo lugar, enumere todos los parámetros de la función almacenada dentro de los
paréntesis seguidos del nombre de la función. Por defecto, todos los parámetros son IN. No se
puede especificar IN, OUTo INOUT modificadores a los parámetros
En tercer lugar, especifique el tipo de datos del valor de retorno en la RETURNSinstrucción, que
puede ser cualquier tipo de datos MySQL válido .
Cuarto, especifique si una función es determinista o no utiliza la DETERMINISTIC palabra
clave.
Una función determinista siempre devuelve el mismo resultado para los mismos parámetros
de entrada, mientras que una función no determinista devuelve resultados diferentes para
los mismos parámetros de entrada.
La siguiente declaración CREATE FUNCTION crea una función que devuelve el nivel de cliente
en función del crédito:
1 DELIMITER $$
4 credit DECIMAL(10,2)
5 )
6 RETURNS VARCHAR(20)
7 DETERMINISTIC
8 BEGIN
10
18 END IF;
20 RETURN (customerLevel);
21 END$$
22 DELIMITER ;
1 SELECT
2 customerName,
3 CustomerLevel(creditLimit)
4 FROM
5 customers
6 ORDER BY
7 customerName;
Llamar a una función almacenada en un procedimiento almacenado
1 DELIMITER $$
4 IN customerNo INT,
6 )
7 BEGIN
10
12 SELECT
13 creditLimit
14 INTO credit
15 FROM customers
16 WHERE
17 customerNumber = customerNo;
18
22
23 DELIMITER ;
1 CALL GetCustomerLevel(-131,@customerLevel);
2 SELECT @customerLevel;
Es importante tener en cuenta que si una función almacenada contiene instrucciones SQL que
consultan datos de tablas, entonces no debe usarla en otras instrucciones SQL; de lo contrario,
la función almacenada disminuirá la velocidad de la consulta.