Erstellen Sie eine Funktion in MySQL
Das heutige Tutorial erklärt, wie man eine Funktion in MySQL erstellt. Es erklärt zuerst die Syntax und erstellt dann eine Funktion anhand einer Beispieltabelle.
Erstellen Sie eine Funktion in MySQL
Ein gespeichertes Programm, an das wir einen oder mehrere Parameter übergeben und einen Wert zurückbekommen, wird als Funktion bezeichnet. Es verfügt über eine Reihe von SQL-Anweisungen, um einige Aufgaben auszuführen und einen Wert auszugeben.
Das Folgende ist die Syntax zum Erstellen einer MySQL-Funktion.
CREATE FUNCTION functionName(parameter1, parameter2, ..)
RETURN dataType [characteristics]
function_body
Hier umfasst der function_body
SQL-Anweisungen, um eine Operation oder Aufgabe abzuschließen. Seine Struktur sieht wie unten angegeben aus.
BEGIN
MySQL Statements
RETURN Expression
END
Hier ist die vollständige Syntax zum Erstellen einer Funktion.
DELIMITER ;;
CREATE FUNCTION functionName(parameter1,parameter2,…)
RETURNS datatype
[NOT] DETERMINISTIC
BEGIN
MySQL Statements
RETURN Expression
END ;;
DELIMITER ;
In der obigen Syntax machen wir die folgenden Dinge.
- Setzen Sie das Trennzeichen zurück, damit nicht alle Anweisungen einzeln ausgeführt werden können.
- Schreiben Sie den Namen der Funktion nach dem Schlüsselwort
CREATE FUNCTION
. - Schreiben Sie alle Parameter in Klammern nach dem Funktionsnamen. Wir können die Modifikatoren namens
INOUT
,IN
oderOUT
nicht für Parameter angeben, aber sie (alle Parameter) sind standardmäßig dieIN
-Parameter. - Schreiben Sie die gültige Rückgabe Datentyp.
- Geben Sie an, ob die Funktion eine
DETERMINISTIK
verwendet/nicht verwendet. MySQL Server verwendet dasNOT DETERMINISTIC
, wenn wir das SchlüsselwortNOT DETERMINISTIC
/DETERMINISTIC
nicht schreiben. - Schreiben Sie den Hauptcode zwischen die Blöcke
BEGIN
undEND
. In den Funktionskörper müssen wir mindestens eineRETURN
-Anweisung schreiben. - Ändern Sie abschließend das Trennzeichen auf seinen Standardwert
;
.
Bereiten wir eine Tabelle mit dem Namen users
mit zwei Attributen vor, ID
und CREDIT
, wobei ID
ein Primärschlüssel ist. Die folgenden Abfragen können verwendet werden, um die Tabelle users
zu erstellen und zu füllen.
Beispielcode:
# 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;
Ausgang:
+----+--------+
| ID | CREDIT |
+----+--------+
| 1 | 5000 |
| 2 | 4000 |
| 3 | 3000 |
| 4 | 1000 |
+----+--------+
4 rows in set (0.00 sec)
Wir schreiben die folgende Funktion, um den userLevel
abhängig vom CREDIT
zu bestimmen. Sehen Sie sich ein Codebeispiel unten an.
Beispielcode:
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 ;
Sobald die Funktion erstellt ist, verwenden Sie die folgende Abfrage, um die Funktion aufzurufen.
SELECT ID,CREDIT, UserLevels(CREDIT) AS USER_LEVEL
FROM users;
Ausgang:
+----+--------+------------+
| ID | CREDIT | USER_LEVEL |
+----+--------+------------+
| 1 | 5000 | PLATINUM |
| 2 | 4000 | GOLD |
| 3 | 3000 | SILVER |
| 4 | 1000 | BASIC |
+----+--------+------------+
4 rows in set (0.06 sec)