Crear una función en MySQL
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
,IN
oOUT
a los parámetros, pero ellos (todos los parámetros) son los parámetrosIN
por 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 DETERMINISTIC
si no escribimos la palabra claveNOT DETERMINISTIC
/DETERMINISTIC
. - Escribe el código principal entre los bloques
BEGIN
yEND
. 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)