SQL Server Stored Procedures

  • تعريف :    -  الـ Stored Procedure هو عباره عن مجموعه من العمليات  (Transact) تخزن في قاعده البيانات كاكائن
                      (Object)  
     بغرض الاستخدام المتعدد , وهو يعتبر برنامج صغير ينفذ داخل قاعده البيانات .


  • يمكن تقسيم  الـ Stored Procedure  كالتالي  :
- التكوين (Composition)
- الوظيفة او الاستخدام (Functionality)
- بناء الجمله (Syntax)


 1- التكوين :
يتكون  Stored Procedure  من :
                                       أ- الرأس header :  وفيه يتم تحديد اسم الاجراء و اسماء المتغيرات (parameters)
                                      ب- جسم الاجراء  body :  وفيه يتم كتابه العمليات (Transact-SQL statements)
- انشاء  Stored Procedure :                                         الان سنري طريقة بناء اجراء داخل قاعده البيانات

------------------------------------------------------------
 CREATE PROCEDURE <Procedure_Name>
--هنا يتم وضع المتغيرات
@Param1
@Param2
AS
BEGIN

    -- هنا يتم وضع العمليات
SELECT @Param1 , @Param2
END
-----------------------------------------------------------
- مثال :
    لدينا Table للمنتجات في قاعده البيانات ويحتوي علي حقول كما في الشكل التالي :
    والمطلوب هو Procedure لاضافه صنف ان كان 
     غير موجود وتحديثه ان كان موجود .





- سيتم انشاء الاجراء كالتالي وقد اعطيته اسم SP_UpdataProduct :


--------------------------------------------------------------------------

CREATE PROCEDURE SP_UpdataProduct

@ProId nvarchar(200) ,
@ProName  nvarchar(250) , 
@ProUnit  nvarchar(50) ,
@ProPrice money

AS
BEGIN
--التاكد من وجود الصنف
--اذا كان الصنف موجود
If exists(Select ProId From Products Where ProId = @ProId)
Begin
-- تحديث الصنف
update Products
Set ProName = @ProName , ProUnit = @ProUnit , ProPrice = @ProPrice
Where ProId = @ProId ;
End
--اذا غير موجود 
Else

Begin
-- ادخال صنف جديد
Insert into Products
(ProId , ProName ,ProUnit , ProPrice)
Values
(@ProId , @ProName , @ProUnit , @ProPrice) ;

End

End

-----------------------------------------------------------------------------
- يتم تعديل الـ Stored Procedure باستخدام كلمه Alter ثم كتابه اسم Procedure

2 - الاستخدام :
 يمكن ان يستخدم  الـ Stored Procedure في : 
                                                            
                          أ - ارجاع المعلومات للمتصل Return information to the caller
                         ب - تعديل البيانات في قاعده البيانات Modify data in databases
                         جـ - تحسين اداء النظام Improve performance of the system
                          د - تقليل الضغط والازدحام علي الشبكه Reduce network traffic

- يوجد 4 طرق لاستقبال المعلومات من  الـ Stored Procedure :

                         أ - ارجاع النتائج Returning result sets
                        ب - استخدام بارمترات المدخلات والمخرجات Input and Output parameters
                        جـ - استخدام القيم المرجعه (المستدعاه) Return values
                        د - المؤشر او الكورسر العام Global cursor

3 - الصياغه او النحو او بناء الجمله :
 فيما يلي نص بناء الجمله Syntax :
-----------------------------------------------------------------------------
CREATE PROG[EDURE] schema. procedure_name [;number]
[
{@parameter schema.data_type} [VARYING] [= default] [OUTPUT]
]
,...n]
[
WITH { RECOMPILE
[ | ENCRYPTION
| EXECUTE AS { CALLER | SELF | OWNER | 'user_name' }
} ] [FOR REPLICATION] AS
sql_statement [...n]

-----------------------------------------------------------------------------.