Тази статия описва как да създадете и изпълните MySQL съхранени функции и процедури във вашия A2 хостинг акаунт. Можете да използвате съхранени функции и процедури за широк спектър от сценарии. Например, добре проектираните съхранени функции и процедури могат да подобрят сигурността на базата данни, да подобрят целостта на данните и да увеличат производителността.
Съхранени функции
Съхранените функции в MySQL осигуряват мощен и гъвкав начин за манипулиране и обработка на данни. Можете да дефинирате и стартирате съхранени функции на всеки A2 хостинг сървър, който използва MySQL.
Настройване на тестова база данни
За да демонстрираме основен пример за съхранени функции, нека започнем със създаване на база данни, която можем да използваме за целите на тестването. В следния SQL израз заменете потребителско име с потребителското име на вашия акаунт:
СЪЗДАВАНЕ НА БАЗА ДАННИ потребителско име _тест;Можете да изпълните предишната SQL команда (и следващите SQL команди) от командния ред с помощта на инструмента MySQL или във вашия уеб браузър с помощта на phpMyAdmin.
Ако използвате phpMyAdmin, щракнете върху името потребителско име _test, за да изберете базата данни. В противен случай, ако използвате програмата от командния ред mysql, въведете следния SQL израз:
ИЗПОЛЗВАЙТЕ потребителско име _тест;
След това създайте таблица в потребителското име _теста база данни с име продукти . За да направите това, изпълнете следния SQL оператор:
CREATE TABLE продукти (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)Следният SQL израз добавя някои примерни данни към продуктите таблица:
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);ВЪВЕТЕ В продукти (prod_name, prod_cost, prod_price)>Създаване на съхранената функция
Сега, когато имаме база данни и таблица, с които да работим, сме готови да създадем съхранена функция. Нека създадем функция с име calcProfit . Тази функция приема два входни параметъра:цената и цената на нещо. Той изчислява печалбата, като извади разходите от цената и след това връща стойността към извикващия израз.
За да създадете тази съхранена функция, изпълнете следните MySQL оператори:
DELIMITER $$CREATE FUNCTION calcProfit(разходи FLOAT, цена FLOAT) ВРЪЩА DECIMAL(9,2)НАЧАЛО ДЕКЛАРИРАНЕ на печалба DECIMAL(9,2); SET печалба =цена-разходи; ВРЪЩАНЕ на печалба;END$$DELIMITER;DELIMITER командата в началото на тези изрази не позволява на MySQL да обработва дефиницията на функцията твърде скоро. DELIMITER командата в края на тези изрази връща обработката към нормалното.Използване на съхранената функция
Вече можете да изпълните съхранената функция в заявка към база данни. Следният SQL оператор демонстрира как да направите това:
SELECT *, calcProfit(prod_cost,prod_price) КАТО печалба ОТ продукти;Този SQL оператор връща следните резултати:
+--------+--------------+-----------+--------- ---+-------+| prod_id | prod_name | prod_cost | цена_продукция | печалба |+--------+--------------+-----------+---------- --+-------+| 1 | Основна джаджа | 5,95 | 8,35 | 2,40 || 2 | Micro Widget | 0,95 | 1,35 | 0,40 || 3 | Мега джаджа | 99,95 | 140 | 40.05 |+--------+--------------+----------+---------- --+--------+Както можете да видите, calcProfit функцията автоматично изчислява печалбата (цената минус разходите) за всеки продукт в таблицата.
Съхранени процедури
Съхранените процедури понякога се бъркат със съхранените функции, но те се различават по някои важни начини. Съхранените процедури, например, трябва да бъдат извикани с CALL оператор, докато съхранените функции могат да се използват директно в SQL изрази. Можете да дефинирате и изпълнявате съхранени процедури на всеки A2 хостинг сървър, който използва MySQL.
Следните MySQL оператори демонстрират как да създадете много основна съхранена процедура с име procedureTest . Тази процедура извършва лесно търсене на продуктите таблица, която използвахме в примера за съхранена функция по-горе. Въпреки че тази процедура няма много практическа употреба, тя демонстрира правилния синтаксис и структура за деклариране на съхранена процедура:
DELIMITER $$CREATE PROCEDURE procedureTest()BEGIN ИЗБЕРЕТЕ prod_name ОТ продукти;END$$DELIMITER;За да изпълните съхранената процедура, използвайте следния MySQL оператор:
ОБЗАВЕТЕ procedureTest() \GАко използвате phpMyAdmin, въведете предишния израз на MySQL без \G опция в края.Повече информация
За повече информация относно съхранените процедури и функции в MySQL, моля, посетете http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.