MySQL (oraz nie tylko on) umożliwia tworzenie własnych funkcji.
Niniejszy wpis wyjaśni podstawy wykonania pierwszej funkcji oraz wskaże sposób na jej późniejsze wykorzystanie.
Sprawdźmy wpierw, czy w naszej bazie danych istnieją już jakieś funkcje które nie są wbudowanymi funkcjami w silniku bazy danych.
Do powyższego zadania posłuży nam polecenie:
show function status;
W moim przypadku tabelka jest pusta:
Db | Name | Type | Definer | Modified | Created |
Stworzenie nowej funkcji
Stwórzmy więc pierwszą, niezwykle prostą funkcję, wykorzystajmy w tym celu poniższy wzór:
CREATE FUNCTION {nazwa}() RETURNS {typ} RETURN {wartosc}
Na początek deklarujemy stworzenie funkcji oraz jej nazwy. Możemy również w nawiasach zadeklarować ewentualne argumenty oraz ich typ.
Następnie deklarujemy typ zwracany przez funkcję.
Ostatnia linia to zwrócona konkretna wartość.
Przejdźmy w takim razie do przykładu:
CREATE FUNCTION suma (x int, y int)
RETURNS int
RETURN x + y;
Tworzymy zatem funkcję o nazwie „suma” która przyjmuje dwa parametry, oba w formacie „int„. Stworzona przez nas funkcja zwróci oczywiście również „int” będący sumą obu parametrów.
W praktyce, nie ma sensu tworzenia powyższej funkcji, służy ona jedynie w celach poglądowych.
Sprawdźmy czy na liście mamy naszą stworzoną funkcję:
show function status;
Db | Name | Type | Definer | Modified | Created |
ifcode | suma | FUNCTION | radian@localhost | 2020-11-14 10:52:01 | 2020-11-14 10:52:01 |
Wykorzystanie własnych funkcji
Postarajmy się teraz naszą funkcję użyć w praktyce.
Stwórzmy w tym celu zapytanie SQL:
SELECT suma(1, 2);
Powyższe zapytanie zwróci nam wynik „3”, natomiast my możemy wykorzystać ową funkcję w bardziej przydatny sposób:
SELECT suma(`price_netto` + `vat`) FROM `games`;
Możemy w miejscu parametrów wywołania funkcji podać nazwy kolumn zamiast sztywnych wartości.
Usuwanie funkcji
Na koniec przyda nam się usunięcie naszej funkcji, która pewnie do niczego nam się nie przyda 🙂
DROP FUNCTION suma;