MySQL saqlangan protseduralar
Saqlangan protsedura nima?
Saqlangan protsedura - bu saqlanishi va qayta ishlatilishi mumkin bo‘lgan oldindan kompilyatsiya qilingan SQL kodi.
Agar sizda qayta-qayta yozadigan SQL so‘rovingiz bo‘lsa, uni saqlangan protsedura sifatida saqlang va keyin uni bajarish uchun chaqiring.
Saqlangan protsedura parametrlarga ham ega bo‘lishi mumkin, shuning uchun u o‘tkazilgan parametr qiymati (lar)iga qarab harakat qilishi mumkin.
Saqlangan protseduralarning asosiy afzalliklari
Saqlangan protseduralar ma’lumotlar bazasini boshqarishda keng qo‘llaniladi va quyidagi afzalliklarga ega:
- Kodni qayta ishlatish imkoniyati - bir xil protsedurani turli ilovalardan chaqirish mumkin
- Yaxshilangan ishlash - saqlangan protseduralar oldindan kompilyatsiya qilinadi va tezroq ishlaydi
- Ma’lumotlar bazasi xavfsizligi - foydalanuvchilarga ma’lum bir protsedurani bajarish uchun ruxsatni o‘rnatishingiz mumkin (jadvallarga to‘g‘ridan-to‘g‘ri kirishni cheklaydi)
- Oson xizmat ko‘rsatish - protsedurani yangilashda u avtomatik ravishda barcha foydalanishni yangilaydi
Saqlangan protsedura sintaksisi
DELIMITER //
CREATE PROCEDURE procedure_name
@param1 datatype,
@param2 datatype
BEGIN
-- SQL_statements to be executed
SELECT column1, column2
FROM table_name
WHERE columnN = @paramN;
END //
DELIMITER;
Saqlangan protsedurani bajaring
Saqlangan protsedurani ishga tushirish uchun CALL iborasidan foydalaning:
CALL procedure_name('value1', 'value2');
Saqlangan protsedurani tashlang
Saqlangan protsedurani o‘chirish uchun DROP PROCEDURE operatoridan foydalaning:
DROP PROCEDURE procedure_name;Maslahat: DROP PROCEDURE xatolik qaytarmasligiga ishonch hosil qilish uchun, agar protsedura yetishmayotgan bo‘lsa, IF EXISTS bandini qo‘shing:
DROP PROCEDURE IF EXISTS procedure_name;Demo ma’lumotlar bazasi
Ushbu qo‘llanmada biz taniqli Northwind ma’lumotlar bazasidan foydalanamiz.
Quyida Northwind namunasidagi "Mijozlar" jadvalidan tanlov mavjud ma’lumotlar bazasi:
| Mijoz ID | Mijoz nomi | Kontakt nomi | Manzil | Shahar | Pochta kodi | Mamlakat |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Mariya Anders | Obere ko‘chasi. 57 | Berlin | 12209 | Germaniya |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Konstitutsiya 2222 | Meksika D.F. | 05021 | Meksika |
| 3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Meksika D.F. | 05023 | Meksika |
| 4 | Shox atrofida | Tomas Xardi | 120 Gannover kv. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Kristina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Shvetsiya |
Saqlangan protsedura namunasi
Quyidagi SQL "GetCustomersByCity" nomli saqlangan protsedurani yaratadi, undan "Mijozlar" jadvalida ma’lum bir shahardan mijozlarni tanlash uchun foydalanish mumkin:
Misol
DELIMITER //
CREATE PROCEDURE GetCustomersByCity
@City VARCHAR(50)
BEGIN
SELECT * FROM Customers
WHERE City = @City;
END //
DELIMITER;
Bu yerda biz saqlangan protsedurani shaharni ("London") parametr sifatida o‘tkazish orqali bajaramiz va saqlangan protsedura "Mijozlar" jadvalidan tegishli ma’lumotlarni qaytaradi:
Misol
CALL GetCustomersByCity('London');
Ko‘p parametrli saqlangan protsedura
Bir nechta parametrlarni qo‘shish oson. Quyida ko‘rsatilganidek, har bir parametr va ma’lumotlar turini vergul bilan ajrating.
Quyidagi SQL "Mijozlar" jadvalidan ma’lum bir pochta indeksiga ega bo‘lgan ma’lum bir shahardagi mijozlarni tanlaydigan saqlangan protsedurani yaratadi:
Misol
DELIMITER //
CREATE PROCEDURE GetCustomersByCity
@City
VARCHAR(50),
@PostalCode VARCHAR(10)
BEGIN
SELECT * FROM
Customers
WHERE City = @City AND PostalCode = @PostalCode;
END //
DELIMITER;
Yuqoridagi saqlangan protsedurani quyidagicha bajaring:
Misol
CALL GetCustomersByCity('London', 'WA1 1DP');
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
