MySQL saqlangan protseduralar


ULASHISH

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!