MS SQL Stored Procedure

                                            Stored Procedure

 

Salam dostlar bu məqalədə MS SQL Stored Procedure haqqında danışacağıq. Stored Procedure,saved procedure-də deyə bilərik.

Azərbaycan dilində  saxlanılmış üsul olaraq tərcümə olunur.

Stored Procedure SQL Server Database üzərində tutulan SQL sorğularından ibarət olur.Məsəlçün bir və ya bir neçə cədvəl(table)-dən JOIN edərək yazdığımız sorğunu(query) stored procedure yaradaraq daxilində saxlayırırq.

Hemin sorgunu sadə EXECUTE deyərək getiririk.Bununlada hər dəfə sorgunu yenidən yazmağa və ya databaseden kənarda hardasa save eləməyə ehtiyac yoxdur.Yaddaşda saxladığımız sorğuya parametr təyin edərək filtirləmə yolu ilə istədiyimiz məlumati filtirləyib gətirə bilərik.Parametrlər haqqında birazdan danışacağıq.

Stored Procedure Database serverdə saxlanılır və buna görədə çox sürətlə işləyir.Network yükünü azaldır.Sürətli işləməsinin səbəbi bir dəfə tərtib olunduqdan sonra yenidən tərtib olunmağa ehtiyac olmamasıdır.

Stored Procedurun nə işə yaradığından danışdıq

Stored Procedurun özəlliklərindən danışaq:

Parametr və parametrsiz işlənir.Parametrlər Stored Procedurun özəlliklərindəndir.Parametrsiz Stored Procedure heç bir şərt qoyulmamış və filtirləmə edilməmiş sorguya bənəzyir.Məsəlçün SELECT * FROM Technet bu sorğu kimi.

 Başlayaq Stored Procedure necə yaradılır və parametrlər necə təyin olunur ondan danışmağa.

 

Stored Procedure CREATE əmri ilə yaradılır.İlk öncə müvafiq bazamız üzrə prosedurumuzda tətbiq edəcəyimiz table(cədvəl) seçirik və həmin table üzərində sorğular yazıb Stored Procedure-də yerləşdiriik.

Qeyd edim ki bir neçə cədvəllərdən JOIN edərək yazdığımız sorğunu prosedurumuzda yerləşdirə bilərik.

Sonra həmin bir və ya bir neçə cədvəldən (JOIN  edərək) yazdığımız sorğunu procedure daxilində yerləşdirdikdən sonra  parametr şəklində (execute) icra edə bilərik.

Deyəkki Kurs adli bazamız var müvafiq olaraq məllimlər və tələbələr haqqında məlumatları özündə saxlayan (table) sütunlarımız var.

 

İlk öncə Stored Procedure yaradacıq sonra dbo.Student_Info sütunundan sorğu yazaraq proceduramızda yerləşdirəcəyik.Bir neçə sütundan JOIN edərək yazdığımız sorğu əsasında Stored Procedure yarada bilərik,tək sütundan yazdığımız sorğu əsasındada.Hələlik asan başa düşülsün deyə dbo.Student_Info cədvəlindən sorğu yazıb onun əsasında Stored Procedure yaradaq.

İlk öncə dbo.Student_Info sütunumuzu SELECT edək görə hansı sətirlərimiz (row) var.

SELECT * FROM dbo.Student_Info

 

Cədvəlimizdəki məlumatları gördük indi isə Prosedur yaradıb müvafiq cədvəlimizdən sorğu yazaraq procedurada yerləşdirək.

 

 

Stored Procedure yaratmağın qaydasına diqqət edək.

CREATE PROC spStudentInfo @Ölkə NVARCHAR(50)

    AS

       BEGIN

            SELECT first_name,Lastname,Country

                FROM dbo.Student_Info

                    WHERE [email protected]Ölkə

    END

 

Sorğuda first_name,Lastname,Country-ni  sorğu etsək kifayət edər.

İndi isə yaratdıqlarımızı izah edib başa düşməyə çalışaq.

Stored Procedure yaradarkən CREATE əmrindən sonra PROCEDURE və ya qısaca PROC yazırıq.Procdən yazdığımız spStudentInfo Stored Proceduraya verdiyimiz addır mütləq lazımdır və istədiyimiz adı qeyd edə bilərik.Əsas cədvəlin adı ilə eyni olma məcburluğu yoxdur.Qarşısında sp yazmağımız Stored Procedure olduğunu bildirir.@Ölkə NVARCHAR(50) Stored Proceduraya verdiyimiz parametr və ona təyin etdiyimiz verilən tipidir,hansıki parametrə məqaləmizin əvvəlində Stored Procedurun özəlliklərindən biri olduğunu demişdik.Parametirin əvvəlinə elektron poct simvolu yəni @ mütləq əlavə edirik.Sonra həmin simvoldan sonra sorğumuzun WHERE ifadəsində filtirləmə edəcəyimiz sütunu qeyd edirik.Biz müvafiq ölkəyə görə filtirləmə edib tələbələri ölkə üzrə sorğu etməliyik.Sonra parametr üçün tip təyin edirik.Biz NVARCHAR(50) teyin edirik.

Qeyd edim ki parametrə verdiyimiz metn tipi cədvəlimizdəki Country sütununun tipi ilə eyni olmalıdır.

AS deyərək prosedurumuzda yerləşdirmək istediyimiz sorğumuzu yerləşdiririk.AS-dən sonra BEGIN və sonda END yazmaq vacib deyil.Sorğumuzu gözəlləşdirmək üçün qeyd edə bilərik

 

CREATE PROC spStudentInfo @Ölkə NVARCHAR(50)

    AS

       BEGIN

            SELECT first_name,Lastname,Country

                FROM dbo.Student_Info

                    WHERE [email protected]Ölkə

    END

AS-dən sonra sorğumuzu əlavə etdik.İndi isə WHERE şərtində yazdığımız [email protected]Ölkə şərtinə diqqət edək.Filtirləmədəki @Ölkə Stored Procedure yaradarkən əlavə etdiyimiz @Ölkə NVARCHAR(50)-nin eynisidir.WHERE şərtində demək istədiyimiz odur ki  Country = bərabər olsun yuxarıda parametirdə qeyd edəcəyimiz şərtə.Birazdan dahada aydın olacaq.

Sorğumuzu icra edib Commands completed successfully mesajını alırıq.

 İndi isə yaratdığımız Stored Procedurun yerləşdiyi yerə baxaq və icra(execute) edək.

Yaratmış olduğumuz proseduralar Programmability,Stored Procedures bölməsində yerləşir.Gördüyümüz kimi başqa Stored Proceduralarda var,göy ilə işarə olunmuş bizim ən son yaratdığımızdır.

Diqqet etsəniz System Stored Procedures bölməsi var.Orda sistem tərəfindən təyin olunan proseduralar yerləşir.

 

İki cür Stored Procedures var

1)System-defined Stored Procedures.(Sistem tərəfindən təyin olunan)

2)User-defined Stored Procedures.(İstifadəçi tərəfindən təyin olunan)

 

Bizim yaratdığımız User-defined katagoriyasına aiddir.

Yaratdığımız proseduru icra edək.

Stored Procedureni EXECUTE və ya qisaca EXEC  yazaraq çağırırıq.

Əgər  Stored Procedurumuza parametr təyin etməmişiksə o zaman EXEC-dən sonra prosedurun adını yazmağımız kifayət edir.Sorğumuz dərhal işə düşəcək.

Yox əgər parametr təyin etmişiksə EXEC-den sonra yalnız prosedurun adını yazmaq kifayət etməz.Dərhal parametr qeyd et deyə ERROR almış olarıq.Yoxlayaq

Gördüyümüz kimi error alırıq.Parametr əlavə etməli olduğmuzu başa düşürük.

1)Sorğumuza Azərbaycan əlavə edirik.Azərbaycan üzrə olan tələbələri sorğu edirik.Aldığımız nəticəyə baxaq.

EXEC spStudentInfo Azərbaycan

Gördüyümüz kimi ölkəsi Azərbaycan olan tələbələri sorğu etmiş oluruq.

2)İndiysə ölkəsi Gürcüstan olan tələbələri sorğu edək

EXEC spStudentInfo Gürcüstan

3)Növbəti olaraq ölkəsi Amerika olan tələbələri sorğu edək

EXEC spStudentInfo America

Gördüyümüz kimi prosedur daxilinə əlavə etdiyimiz sorğu işə düşür.

 

Deməli son olaraq bu məqama diqqət edək dahada aydın olacaq.

CREATE PROC spStudentInfo @Ölkə NVARCHAR(50)

AS

  BEGIN

     SELECT first_name,Lastname,Country

       FROM dbo.Student_Info

         WHERE [email protected]Ölkə Yəni Stored Procedure yaradarkən  procedure adından sonra qeyd edəcəyimiz parametirə bərabər olsun və

EXEC spStudentInfo-dan sonra yazdığımız Azərbaycan və s kimi ölkə adına bərabər olsun.

    END

 

Deməli EXEC spStudentInfo Azərbaycan deməklə

WHERE Country=Azərbaycan demiş oluruq.

 

Dostlar Stored Proceduru nəzəridən əlavə praktiki olaraqda icra etdik ümid edirəm ki etraflı izah edə bildim.Qaranlıq məqamları commentdə bildirə bilərsiniz.

 

Növbəti məqaləmizdə Stored Procedure-yə DML əmrlərindən olan INSERT,UDATE,DELETE  əmrlərini necə icra olunduğuna baxacağıq.Növbəti məqalədə görüşənədək.

 

Səs: +10. Bəyənilsin Zəifdir

Müəllif: Qerib Hesenov

Şərh yazın