Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak tworzyć i wykonywać funkcje i procedury składowane MySQL

W tym artykule opisano, jak tworzyć i wykonywać przechowywane funkcje i procedury MySQL na koncie A2 Hosting. Funkcji i procedur przechowywanych można używać w wielu różnych scenariuszach. Na przykład dobrze zaprojektowane funkcje i procedury składowane mogą zwiększyć bezpieczeństwo bazy danych, poprawić integralność danych i zwiększyć wydajność.

Przechowywane funkcje

Funkcje przechowywane w MySQL zapewniają potężny i elastyczny sposób manipulowania i przetwarzania danych. Możesz zdefiniować i uruchomić przechowywane funkcje na dowolnym serwerze A2 Hosting, który używa MySQL.

Konfigurowanie testowej bazy danych

Aby zademonstrować podstawowy przykład funkcji składowanych, zacznijmy od stworzenia bazy danych, którą możemy wykorzystać do celów testowych. W poniższej instrukcji SQL zastąp nazwa użytkownika z nazwą użytkownika konta:

CREATE DATABASE username_test;
Możesz uruchomić poprzednie polecenie SQL (i następujące polecenia SQL) z wiersza poleceń za pomocą narzędzia MySQL lub w przeglądarce internetowej za pomocą phpMyAdmin.

Jeśli używasz phpMyAdmin, kliknij nazwę nazwa użytkownika _test, aby wybrać bazę danych. W przeciwnym razie, jeśli używasz programu wiersza poleceń mysql, wpisz następującą instrukcję SQL:

USE username_test;

Następnie utwórz tabelę w nawie użytkownika _test baza danych o nazwie produkty . Aby to zrobić, uruchom następującą instrukcję SQL:

CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

Poniższa instrukcja SQL dodaje kilka przykładowych danych do produktów tabela:

INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
Tworzenie funkcji przechowywanej

Teraz, gdy mamy już bazę danych i tabelę do pracy, jesteśmy gotowi do utworzenia funkcji przechowywanej. Utwórzmy funkcję o nazwie calcProfit . Ta funkcja przyjmuje dwa parametry wejściowe:koszt i cenę czegoś. Oblicza zysk, odejmując koszt od ceny, a następnie zwraca wartość do wyrażenia wywołującego.

Aby utworzyć tę przechowywaną funkcję, uruchom następujące instrukcje MySQL:

DELIMITER $$
CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2)
BEGIN
  DECLARE profit DECIMAL(9,2);
  SET profit = price-cost;
  RETURN profit;
END$$
DELIMITER ;
DELIMITER polecenie na początku tych instrukcji zapobiega zbyt szybkiemu przetwarzaniu definicji funkcji przez MySQL. DELIMITER polecenie na końcu tych instrukcji przywraca normalne przetwarzanie.
Korzystanie z funkcji przechowywanej

Możesz teraz wykonać zapisaną funkcję w zapytaniu do bazy danych. Poniższa instrukcja SQL pokazuje, jak to zrobić:

SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;

Ta instrukcja SQL zwraca następujące wyniki:

+---------+--------------+-----------+------------+--------+
| prod_id | prod_name    | prod_cost | prod_price | profit |
+---------+--------------+-----------+------------+--------+
|       1 | Basic Widget |      5.95 |       8.35 |   2.40 |
|       2 | Micro Widget |      0.95 |       1.35 |   0.40 |
|       3 | Mega Widget  |     99.95 |        140 |  40.05 |
+---------+--------------+-----------+------------+--------+

Jak widać, calcProfit funkcja automatycznie oblicza zysk (cena minus koszt) dla każdego produktu w tabeli.

Procedury przechowywane

Procedury składowane są czasami mylone z funkcjami składowanymi, ale różnią się one pod pewnymi ważnymi względami. Procedury przechowywane, na przykład, muszą być wywoływane za pomocą CALL instrukcji, natomiast funkcje składowane mogą być używane bezpośrednio w wyrażeniach SQL. Możesz zdefiniować i uruchomić procedury składowane na dowolnym serwerze A2 Hosting, który używa MySQL.

Poniższe instrukcje MySQL pokazują, jak utworzyć bardzo podstawową procedurę składowaną o nazwie procedureTest . Ta procedura wykonuje proste wyszukiwanie produktów tabela, której użyliśmy w powyższym przykładzie funkcji przechowywanej. Chociaż ta procedura nie ma zbyt dużego praktycznego zastosowania, pokazuje poprawną składnię i strukturę do deklarowania procedury składowanej:

DELIMITER $$
CREATE PROCEDURE procedureTest()
BEGIN
  SELECT prod_name FROM products;
END$$
DELIMITER ;

Aby wykonać procedurę składowaną, użyj następującej instrukcji MySQL:

CALL procedureTest() \G
Jeśli używasz phpMyAdmina, wpisz poprzednią instrukcję MySQL bez \G opcja na końcu.

Więcej informacji

Więcej informacji o procedurach składowanych i funkcjach w MySQL można znaleźć pod adresem http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL INSERT INTO table VALUES.. vs INSERT INTO table SET

  2. Jak wyodrębnić n-te słowo i policzyć wystąpienia słów w ciągu MySQL?

  3. INDEKS UPUSZCZENIA MySQL

  4. Alternatywy MySQL Workbench — GUI typu „wskaż i kliknij” ClusterControl

  5. aktualizowanie kolumn o numer kolejny mysql