SQL 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 shunchaki 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 - Bitta 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 (SQL Server)
Saqlangan protsedurani yaratish uchun CREATE PROCEDURE operatoridan foydalaning:
CREATE PROCEDURE procedure_name
@param1 datatype,
@param2 datatype
AS
BEGIN
-- SQL_statements to be executed
SELECT column1, column2
FROM table_name
WHERE columnN = @paramN;
END;
Maslahat: MySQL ma’lumotlar bazasi sintaksisini ko‘rish uchun MySQL saqlangan protseduralariga qarang.
Saqlangan protsedurani bajaring
Saqlangan protsedurani ishga tushirish uchun EXEC operatoridan foydalaning:
EXEC procedure_name @param1 = 'value1', @param2 = 'value2';
Saqlangan protsedurani tashlang
Saqlangan protsedurani o‘chirish uchun DROP PROCEDURE buyrug‘idan foydalaning:
DROP PROCEDURE procedure_name;Maslahat: DROP PROCEDURE xato 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
Quyida Northwind namunaviy ma’lumotlar bazasidagi "Customers" jadvalidan tanlanma keltirilgan:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 |
Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
Saqlangan protsedura namunasi
Quyidagi SQL "Customers" jadvalidan ma’lum bir shahardagi (City) mijozlarni tanlash uchun ishlatilishi mumkin bo‘lgan "GetCustomersByCity" nomli saqlangan protsedurani yaratadi:
Misol
CREATE PROCEDURE
GetCustomersByCity
@City nvarchar(50)
AS
BEGIN
SELECT * FROM Customers
WHERE
City = @City;
END;
Bu yerda biz City ("London") parametrini parametr sifatida o‘tkazish orqali saqlangan protsedurani bajaramiz va saqlangan protsedura FROM "Customers" jadvaliga tegishli ma’lumotlarni qaytaradi:
Misol
EXEC GetCustomersByCity @City = 'London';
Bir nechta parametrli saqlangan protsedura
Bir nechta parametrlarni qo‘shish oson. Quyida ko‘rsatilganidek, har bir parametr va ma’lumotlar turini vergul bilan ajrating.
Quyidagi SQL "Customers" jadvalidan ma’lum bir shahar (City) va ma’lum bir pochta indeksiga (PostalCode) ega mijozlarni tanlaydigan saqlangan protsedurani yaratadi:
Misol
CREATE PROCEDURE
GetCustomersByCity
@City nvarchar(50),
@PostalCode nvarchar(10)
AS
BEGIN
SELECT * FROM Customers
WHERE
City = @City AND PostalCode = @PostalCode;
END;
Yuqoridagi saqlanadigan protsedurani quyidagicha ishga tushiring:
Misol
EXEC GetCustomersByCity @City = 'London', @PostalCode = 'WA1 1DP';
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
