SQL saqlangan protseduralar


baham ko'ring

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!