HOWTO · MySQL
Crear una función en MySQL
Este tutorial demuestra cómo crear una función en MySQL.
En esta página
El tutorial de hoy enseña cómo crear una función en MySQL. Primero explica la sintaxis y luego crea una función usando una tabla de muestra.
Crear una función en MySQL
Un programa almacenado al que podemos pasar uno o varios parámetros y obtener un valor a cambio se conoce como función. Tiene un conjunto de declaraciones SQL para realizar algunas tareas y generar un valor.
La siguiente es la sintaxis para crear una función MySQL.
CREATE FUNCTION functionName(parameter1, parameter2, ..)
RETURN dataType [characteristics]
function_body
Aquí, el cuerpo_función comprende sentencias SQL para completar una operación o tarea. Su estructura se ve como se indica a continuación.
BEGIN
MySQL Statements
RETURN Expression
END
Aquí está la sintaxis completa para crear una función.
DELIMITER ;;
CREATE FUNCTION functionName(parameter1,parameter2,…)
RETURNS datatype
[NOT] DETERMINISTIC
BEGIN
MySQL Statements
RETURN Expression
END ;;
DELIMITER ;
En la sintaxis anterior, estamos haciendo lo siguiente.
- Restablezca el delimitador para que todas las declaraciones no se puedan ejecutar individualmente.
- Escriba el nombre de la función después de la palabra clave
CREATE FUNCTION. - Escriba todos los parámetros entre paréntesis después del nombre de la función. No podemos especificar los modificadores llamados
INOUT,INoOUTa los parámetros, pero ellos (todos los parámetros) son los parámetrosINpor defecto. - Escriba la devolución válida tipo de dato.
- Especificar si la función está usando/no usando un
DETERMINISTA. MySQL Server utiliza la palabra claveNOT DETERMINISTICsi no escribimos la palabra claveNOT DETERMINISTIC/DETERMINISTIC. - Escribe el código principal entre los bloques
BEGINyEND. En el cuerpo de la función, necesitamos escribir un mínimo de una instrucciónRETURN. - Finalmente, cambie el delimitador a su valor predeterminado
;.
Preparemos una tabla llamada usuarios con dos atributos, ID y CRÉDITO, donde ID es una clave principal. Las siguientes consultas se pueden utilizar para crear y completar la tabla usuarios.
Código de ejemplo:
# create a table
CREATE TABLE users (
ID INT NOT NULL AUTO_INCREMENT,
CREDIT INT NOT NULL,
PRIMARY KEY (id)
);
# insert data
INSERT INTO users (CREDIT) VALUES (5000);
INSERT INTO users (CREDIT) VALUES (4000);
INSERT INTO users (CREDIT) VALUES (3000);
INSERT INTO users (CREDIT) VALUES(1000);
# display data
SELECT * FROM users;
Producción :
+----+--------+
| ID | CREDIT |
+----+--------+
| 1 | 5000 |
| 2 | 4000 |
| 3 | 3000 |
| 4 | 1000 |
+----+--------+
4 rows in set (0.00 sec)
Escribimos la siguiente función para decidir el userLevel en función del CRÉDITO. Vea un ejemplo de código a continuación.
Código de ejemplo:
DELIMITER ;;
CREATE FUNCTION UserLevels(
credit DECIMAL(10,2)
)
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
DECLARE userLevel VARCHAR(20);
IF credit >= 5000 THEN
SET userLevel = 'PLATINUM';
ELSEIF (credit >= 4000 AND
credit < 5000) THEN
SET userLevel = 'GOLD';
ELSEIF (credit > 1000 AND credit < 4000 ) THEN
SET userLevel = 'SILVER';
ELSE
SET userLevel = 'BASIC';
END IF;
RETURN (userLevel);
END;;
DELIMITER ;
Una vez creada la función, utilice la siguiente consulta para llamar a la función.
SELECT ID,CREDIT, UserLevels(CREDIT) AS USER_LEVEL
FROM users;
Producción :
+----+--------+------------+
| ID | CREDIT | USER_LEVEL |
+----+--------+------------+
| 1 | 5000 | PLATINUM |
| 2 | 4000 | GOLD |
| 3 | 3000 | SILVER |
| 4 | 1000 | BASIC |
+----+--------+------------+
4 rows in set (0.06 sec)