Tworzenie procedur składowych MySQL (CREATE PROCEDURE)



Procedura jest podprogramem utworzonym w MySQL, która zawiera kod sql oraz kod sterujący jej wykonaniem. Przydatna jest gdy chcemy wykonywać często jakiś kod lub gdy wiele aplikacji korzysta z tego samego kodu.
Składnia procedury:

CREATE PROCEDURE nazwa (IN zmienna typ, OUT zmienna typ)
BEGIN
Polecenia i kod SQL
END

Przykład procedury w MySQL:

delimiter //
CREATE PROCEDURE pTest (in mail varchar(30))
BEGIN
select concat(imie,' ',nazwisko) from dane where email=mail;
END
//

Procedura ta zwraca nam imie i nazwisko na podstawi podanej zmiennej. Polecenie delimiter wskazuje nam znak zachęty końca kodu, musi być podany gdyż MySQL wykonuje procedure do znaku średnika.

mysql> call pTest('k@op.pl')//
+---------------------------+
| concat(imie,' ',nazwisko) |
+---------------------------+
| Stefan Kawa |
+---------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Inny sposób wywołania tej procedury to:

delimiter //
CREATE PROCEDURE pTest (out wynik varchar(30),in mail varchar(30))
BEGIN
select concat(imie,' ',nazwisko) into wynik from dane where email=mail;
END



mysql> call pTest(@wynik,'m@op.pl')//
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> select @wynik//
+--------+
| @wynik |
+--------+
| NULL |
+--------+
1 row in set (0.00 sec)

Polecenie OUT wskazuje tu która zmienna w MySQL jest wyjściowa, a IN jest parametrem wejściowym.

Tworzenie funkcji w MySQL (CREATE FUNCTION)



Funkcje w MySQL, różnią się od procedur tym, że nie muszą być wskazywane parametry wejścia i wyjścia ponadto funkcja zwraca jakiś typ danych z dostępnych w MySQL.
Składnia:
CREATE FUNCTION nazwa (parametry) RETURNS typ
Begin
polecenia
Return wynik
End

Przykład funkcji w MySQL:

mysql> create function fTest() returns varchar(20)
-> begin
-> return 'hello word!';
-> end//
Query OK, 0 rows affected (0.00 sec)

mysql> select fTest()//
+-------------+
| fTest() |
+-------------+
| hello word! |
+-------------+
1 row in set (0.01 sec)

Przykład funkcji z parametrem MySQL:

mysql> create function fTest(imie varchar(30)) returns varchar(100) begin return Concat('hello ',imie); end//
Query OK, 0 rows affected (0.00 sec)

mysql> select ftest(imie) from dane//
+--------------+
| ftest(imie) |
+--------------+
| hello Stefan |
| hello Marek |
| hello Ewa |
+--------------+
3 rows in set (0.00 sec)


Celem wyświetlenia kodu funkcji lub procedury należy użyć polcenia
SHOW CREATE FUNCTION fTEST;
Analogicznie dla procedur.

Usuwanie funkcji i procedure w MySQL

Prostym sposobem na usunięcie funkcji jest polecenie
DROP FUNCTION IF EXISTS fTest
Lub
DROP PROCEDURE IF EXISTS pTest
Oczywiście możemy użyć również samego DROP FUNCTION nazwa lub DROP PROCEDURE nazwa.

Napisze jeszcze kilka słów o zmiennych w MySQL, zmienne lokalne mogą być deklarowana wewnątrz bloku BEGIN … END przy użyciu instrukcji DECLARE.
Przykład zmiennej w MySQL.

CREATE FUNCTION fNetto (pensja flout) returns flout
BEGIN
DECLARE potracenia flout default 0.71;
Return pensja * potracenia;

END


W procedurach w MySQL możemy stosować instrukcje warunkowe takie jak IF.
Np.

delimiter //
CREATE PROCEDURE pTest (in liczba int)
BEGIN
IF liczba <10 then
SELECT 'mniejsza od 10';
ELSE
SELECT 'wieksza równa 10';
END IF;
END
//



mysql> call pTest(1)//
+----------------+
| mniejsza od 10 |
+----------------+
| mniejsza od 10 |
+----------------+
1 row in set (0.00 sec)




SQL-KURSY.pl poleca:

Książki

Copyright 2010-2011mariuszhk@op.pl

obob ob

Valid HTML 4.01 Transitional

Strona internetowa wykorzystuje pliki cookie zapisywane w pamięci przeglądarki internetowej.

OK