Crear una función en MySQL

Mehvish Ashiq 16 febrero 2024
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.

  1. Restablezca el delimitador para que todas las declaraciones no se puedan ejecutar individualmente.
  2. Escriba el nombre de la función después de la palabra clave CREATE FUNCTION.
  3. Escriba todos los parámetros entre paréntesis después del nombre de la función. No podemos especificar los modificadores llamados INOUT, IN o OUT a los parámetros, pero ellos (todos los parámetros) son los parámetros IN por defecto.
  4. Escriba la devolución válida tipo de dato.
  5. Especificar si la función está usando/no usando un DETERMINISTA. MySQL Server utiliza la palabra clave NOT DETERMINISTIC si no escribimos la palabra clave NOT DETERMINISTIC/DETERMINISTIC.
  6. Escribe el código principal entre los bloques BEGIN y END. En el cuerpo de la función, necesitamos escribir un mínimo de una instrucción RETURN.
  7. 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)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MySQL Function