Witaj na naszym forum!
Nie jesteś zalogowany. (Logowanie - Rejestracja)
Użytkownik: Pamiętaj mnie:
Hasło:
Załóż nowy temat
Początek kursu pisania funkcji w MySQL
Google
To jest wiadomość reklamowa.
Grupa: Goście
 
off-line hemicalyaction
Odczytana Wysłano: Niedziela 21:51 04.10.2009 #2
Administrator


Grupa: Administratorzy
Posty: 436
Reputacja: Klejnot w koronie
Ostrzeżenia: 0%

Rejestracja: Czwartek 20:42 03.07.2008
O czym jest ten artykuł?

Artykuł ma za zadanie przybliżyć czytelnikowi temat pisania własnych funkcji w bazie danych.

Czym są funkcje użytkownika?

Funkcje użytkownika są podprogramami zapisanymi bezpośrednio w bazie
danych, gdzie językiem programowania jest język SQL oraz elementy
specyficzne dla danego systemu bazodanowego (np w PostgreSQL do pisania
funkcji standardowo używa się języka pl/pgsql, ale można użyć także
perla, javy itp.MS SQL z kolei udostępnia świetny język TransactSQL,
który podobnie jak pl/pgsql jest językiem SQL rozszerzonym o elementy
programowania proceduralnego).

Dlaczego warto stosować funkcje użytkownika?

Funkcje użytkownika mogą wpłynąć znacząco na wydajność pisanej
aplikacji (skomplikowane zapytania są zapisane w bazie danych,
użytkownik/programista ma za zadanie jedynie wywołać funkcję
zawierającą dane zapytania poprzez SELECT funkcja(parametr); ). Funkcje
użytkownika pomagają także w sytuacjach, gdzie kluczowym elementem jest
spójność danych (czyli wszelkiego rodzaju bazy hurtowni, bankowe etc).

Stosowanie funkcji użytkownika wszędzie, gdzie tylko jest to możliwe
wpływa także korzystnie na bezpieczeństwo kodu naszej aplikacji. Czemu?
W przypadku wycieku kodu osoba, która wejdzie w jego posiadanie tak
naprawdę nic z nim nie zrobi nie mając źródła funkcji użytkownika.
Ponadto użytkownik łączący się na uprawnieniach danej aplikacji do
naszej bazy także nie obejrzy sobie kodu funkcji SQL uśmiechnięty

... So let's go with this shit.


Wprowadzenie zaczniemy od tradycyjnego Hello World! w 2 wersjach: bez parametrów i z parametrem.

Kod

DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION hw() RETURNS text CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE var_tekst TEXT;
SET var_tekst = 'Hello World!';
RETURN (var_tekst);
END;


No to tłumaczymy:

DELIMITER $$ -> pozwala nam na użycie znaku średnika ( ; ) w ciele funkcji. Znaki $$ mogą zostać zastąpione innymi, np //
CREATE DEFINER=`root`@`%` -> określa kto zdefiniował (utworzył) funkcję. DEFINER staje się automatycznie właścicielem funkcji, czyli może podglądnąć jej kod zapisany już na serwerze
FUNCTION hw() -> definiuje nazwę funkcji ( w tym przypadku hw() ) wraz z ewentualnymi parametrami
RETURNS text CHARSET utf8 -> definiuje jaki typ danych ma funkcja zwrócić na standardowe wyjście

Użycie funkcji wygląda następująco:

[mysql]SELECT hw();[/mysql]

W odpowiedzi serwer MySQL powinien zwrócić string "Hello World!".

Wersja tej funkcji z parametrami nie różni się znacząco.

Kod

DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION hw(parametr1 varchar(32), parametr2 varchar(32)) RETURNS text CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE var_tekst TEXT;
SET var_tekst = CONCAT(parametr1, ' ', parametr2, '!');
RETURN (var_tekst);
END;


Jedyną nowością są tutaj parametry podawane do funkcji hw().
Parametry zawsze zapisujemy w sposób podany w przykładzie, czyli: nazwa
typ_danych(długość)

Koniec części pierwszej.
Oryginalny tekst: blog.hemical.pl/2009/10/04/tworzenie-funkcji-w-bazie-danych-na-przykladzie-mysql/
Ostatnio zmieniano Poniedziałek 13:55 28.12.2009 przez kallosz. Razem zmieniano 3 razy.
 
Google
To jest wiadomość reklamowa.
Grupa: Goście
 
0 odpowiedzi
Załóż nowy temat
Ten temat nie jest oznaczony żadnymi tagami.
Ten temat czyta w sumie 1 użytkowników, w tym 0 botów, 1 gości, 0 zarejestrowanych i 0 ukrytych użytkowników.
tego tematu nie czyta żaden zalogowany użytkownik
Przejdź do:
Przejdź do nowego forum
 
xNova - Forum polskiego supportu - xnova-support.pl > Forum > Nowości
Początek kursu pisania funkcji w MySQL
Kontakt Wersja lekka
Niedziela 14:19 05.09.2010
[ 0.52255 s | 9 SQL`s ]
powered by Callisto © 2010 Unisolutions