إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
* * * * * 1 صوت

دروس Pl/sql من الألف الى الياء


138 رد (ردود) على هذا الموضوع

#61 khaledhere

khaledhere

    مشترك

  • الأعضــاء
  • 55 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 19 January 2010 - 07:36 PM

جزاك الله خيرا على الدروس القيمه اللى استفدت منها شخصيا
بس فة حلقه مفقوده عندى ياريت توضها ليا
انا دلوقتى اتعلمت sql
واتعلمت pl/sql من فترة ودلوقتى بفهمها اكتر من دروس حضرتك
طيب الحاجات ده كلها
ليه بنطبقها على sql*plus يعنى ايه وجه الاستفاده اننا بنطبقها على sql*plus
انا فاهم ان بنطيق sql على sql*plus عشان نفهم الاوامر
طيب ودلوقتى ليه بنطبق pl/sql على برنامج sql*plus عشان بردو نفهم الاوامر ولا عشان حاجه تانيه
ياريت من فضلك طلب
تعمل مثال على دروسك حضرتك وكيفيه يمكن الاستفادخ به فى forms عشان الواحد يكون فهم بالظبط بناءا على وضع مثال بسيط لان ده هيوضح حاجت كتير ان شاءالله


#62 المبرمجة المبتدئة

المبرمجة المبتدئة

    عضو

  • الأعضــاء
  • 6 مشاركة

تاريخ المشاركة 20 January 2010 - 11:57 AM

بارك الله فيك يا اخي وارجو منك الاستمرار كوننا نستفيد منك بشكل ممتاز واعانك الله على فعل الخير دائما

#63 3oraby

3oraby

    عضو

  • الأعضــاء
  • 8 مشاركة

تاريخ المشاركة 20 January 2010 - 03:37 PM

ما شاء الله

جزاك الله خيرا اخي الكريم على هذا المجهود

#64 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 20 January 2010 - 03:44 PM

جزاك الله خيرا على الدروس القيمه اللى استفدت منها شخصيا
بس فة حلقه مفقوده عندى ياريت توضها ليا
انا دلوقتى اتعلمت sql
واتعلمت pl/sql من فترة ودلوقتى بفهمها اكتر من دروس حضرتك
طيب الحاجات ده كلها
ليه بنطبقها على sql*plus يعنى ايه وجه الاستفاده اننا بنطبقها على sql*plus
انا فاهم ان بنطيق sql على sql*plus عشان نفهم الاوامر
طيب ودلوقتى ليه بنطبق pl/sql على برنامج sql*plus عشان بردو نفهم الاوامر ولا عشان حاجه تانيه
ياريت من فضلك طلب
تعمل مثال على دروسك حضرتك وكيفيه يمكن الاستفادخ به فى forms عشان الواحد يكون فهم بالظبط بناءا على وضع مثال بسيط لان ده هيوضح حاجت كتير ان شاءالله


الله يبارك فيك أخي الفاضل خالد

كلامك افرحني اخي العزيز لانك أستفدت من هذه الدروس

وبالنسبة للحلقة المفقودة

احنا بنطبق الSQL والــPL/SQl على sql*plus لانه هذه بيئة التطبيق الخاصة بها

وكذلك نقدر ان نطبق جمل الــSQl والــPL/SQL على الـــForm

وانا أن شاء الله سأقوم بكتابة بعض الامثلة على الــProcedure والــFunction وتطبيقها على الــForm

ولكن بعد ما انتهي من شرح الــFunction وانا جاهز لأي أستفساء ان شاء الله

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#65 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 20 January 2010 - 03:50 PM

بارك الله فيك يا اخي وارجو منك الاستمرار كوننا نستفيد منك بشكل ممتاز واعانك الله على فعل الخير دائما



الله يبارك فيكي اختي الفاضلة

انا اسف للتأخري في كتابة الدروس

اليوم أن شاء الله سأشرح الــFunction

وانا جاهز لأي أستفسار اختي الفاضلة

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#66 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 25 January 2010 - 04:52 PM


السلام عليكم ورحمة الله وبركاته

اسف اخواني الاعزاء في التأخر في تكملة الدروس

اليوم سنقوم بشرح للـــFunction ابن عم الـــــــProcedure

ولكن لنعمل مراجعة بسيطة للــتعريف الـــ Procedure

قلنا انا الــProcedure هو عبارة عن برنامج له اسم ويخزن في قاعدة البيانات ويمرر له براميتر

ويرجع لي قيمة معينة ويقوم بأكثر من عملية في البرنامج الواحد وأستطيع استدعائه في أي وقت انا بحاجته

واقوم بتنفيذه .

عندي أضافة في التعريف الــ Procedure ممكن يرجع قيمة وحدة وممكن ان يرجع اكثر من قيمة

لاكثر من نوع من البيانات او يرجع اكثر من قيمة من نفس النوع وممكن ان لا يرجع أي قيمة .(((كلام جميل )))

الان سنبدء في الشرح عن ابن عم الــــ Procedure وهو ابن العم الــFunction .

بسم الله نبدء

اولا سنقوم بتعريف الــFunction .

تعريف رقم (((1)))

هو عبارة عن برنامج له اسم ويخزن في قاعدة البيانات ويمرر له براميتر

ويرجع لي دائما قيمة واحدة فقط ويجب ان يرجع قيمة (((احد الفروق مع الــ Procedure)))

ويقوم بأكثر من عملية في البرنامج الواحد وأستطيع استدعائه في أي وقت انا بحاجته

تعريف رقم (((2)))

هو عبارة عن برنامج بخيل جداًاًاًاًاً بحيث لا يقوم الا بأرجاع قيمة واحدة فقط

تعريف رقم (((3)))

هو عبارة عن برنامج شايف حاله لا يقوم الا بنقل كبار الزوار ((( الطبقة المخملية)))

وكما نعرف اصحاب هذه الطبقة لهم بروتوكول خاص بهم اذ لا يجوز ارجاع اكثر من واحد

في كل مرة يقوم البرنامج بعمله .

والان سنقوم بشرح كيفية كتابة الـــ Function




Create [Or Replace] Function Function-Name   هنا نقوم بأنشاء الاقتران   
(P1 in Number,P2 out Varchar2,P3 in out date....) هنا نقوم بتعريف البراميتر  
Return Data Type	 هنا بوضع نوع البيانات التي سيقوم الــFunction  بأرجاعها 
Is   كلمة اجبارية  
Variables   Decleration Section هذا الجزء من البرنامج يعرف فيه المتغيرات بأنواعها   

Begin   (Mandatory)  بداية الاجراء  وهذا الجزء أجباري

Eexcutable Section	هنا يكتب كود البرمجة الخاص بالبرنامج 
Pl/Sql Code

.
.
.
Return  Value;  هنا نضع القيمة التي يريد الــFunction أرجاعها 
[Exception]  (Optional)هذا الجزء خاص بمعالجة أخطاء الاجراء وهو أختياري	 
.
.
.
Return  Value;  هنا نضع القيمة التي يريد الــFunction أرجاعها  في حالة حدوث Error
End [Function-Name];  (Mandatory)  نهاية البرنامج وهذا الجزء أجباري


سنبدء في مثال صغير للكتابة الــــFunction

أريد ان اكتب برنامج صغير يقوم بجمع رقمين وأخراج الناتج

بسم الله نبدء


SQL> set serveroutput on
SQL> set verify off
SQL> create or replace function Tot(X in number,Y in number)
  2  Return Number
  3  is
  4  Begin
  5  Return X+Y;
  6  end;
  7  /

Function created.

الان سنقوم بأستدعاء الـــFunction كألاتي .

يجب تعريف متغير من نفس نوع القيمة التي سيقوم الــ Function بأسترجاعها

لوضع قيمة الـــ Function فيها كألاتي .


PL/SQL procedure successfully completed.

SQL> Declare
  2  Z number;
  3  begin
  4  Z:=Tot(8,9);
  5  Print('Total = '||Z);
  6  end;
  7  /
Total = 17

PL/SQL procedure successfully completed.

او أستخدام هذه الطريقة لادخال ارقام مختلفة في كل مرة .

SQL> Declare
  2  Z number;
  3  Begin
  4  Z:=Tot(&N1,&n2);
  5  Print('Total  = '||Z);
  6  end;
  7  /
Enter value for n1: 7
Enter value for n2: 5
Total  = 12

PL/SQL procedure successfully completed.

SQL> /
Enter value for n1: 90
Enter value for n2: 77
Total  = 167

PL/SQL procedure successfully completed.

SQL> /
Enter value for n1: 50
Enter value for n2: 80
Total  = 130

PL/SQL procedure successfully completed.

مثال جديد .

أريد ان اكتب Function يحسب الراتب السنوي .

بسم الله نبدء



SQL> Create or replace Function Ann_Sal(P_sal in number,P_Comm in number)
  2  Return Number
  3  is
  4  Begin
  5  Return P_sal*12+nvl(p_Comm,0);
  6  end;
  7  /

Function created.

وطريقة الاستدعاء هي .

SQL> Declare 
  2  V_Sal Number;
  3  Begin
  4  V_Sal:=Ann_Sal(100,10);
  5  Print('Salary Year =  '||V_Sal);
  6  end;
  7  /
Salary Year =  1210

PL/SQL procedure successfully completed.


مثال جديد .

أريد ان اكتب نفس المثال السابق ولكن اريد ان اعطيه رقم الموظف ويحسب الراتب السنوي


SQL> ed
Wrote file afiedt.buf

  1   Create or replace Function Ann_Sal(P_Empno in number)
  2   Return Number
  3   is
  4	V_Ann number;
  5   Begin
  6   Select  sal*12+nvl(Comm,0)
  7   into  V_Ann
  8   From  Emp
  9	Where Empno=P_Empno;
 10	Return V_Ann;
 11   Exception
 12   When Others Then
 13   Return  0;
 14*  end;
 15  /

Function created.

وطريقة الاستدعاء .


SQL> Declare
  2  V_sal Number;
  3  Begin
  4  v_sal:=Ann_Sal(&P_Empno);
  5  Print('Salary Year = '||V_sal);
  6  end;
  7  /
Enter value for p_empno: 7900
Salary Year = 11400

PL/SQL procedure successfully completed.

SQL> /
Enter value for p_empno: 7782
Salary Year = 29400

PL/SQL procedure successfully completed.

SQL> /
Enter value for p_empno: 7876
Salary Year = 13200

PL/SQL procedure successfully completed.

أما في حالة ادخلنا رقم خطأ ما هي النتيجة لنرى .

SQL> /
Enter value for p_empno: 5444
Salary Year = 0

PL/SQL procedure successfully completed.

لقد قام بأرجاع القيمة صفر الموجودة داخل الــ Exception

مثال جديد .

أريد ان اكتب Function اعطيه رقم الموظف يعطيني رقم مديره .


create or replace function Manger(P_Empno in number)
Return Varchar2
is
Cursor C_Manger is
select m.ename
 from emp e,emp m
 where e.mgr=m.empno
 and   e.empno=p_empno;
 V_Manger C_Manger%rowtype;
 begin
 open  C_Manger;
 fetch  C_Manger
into  V_Manger;
If C_Manger%Notfound then
Return 'Big Bossss';
else
Return V_Manger.Ename;
end if;
Close C_Manger;
end;
SQL> /

Function created.

وطريقة الاستدعاء


SQL> Declare
  2  V_Manager Varchar2(100);
  3  Begin
  4  V_Manager:=Manger(&P_Empno);
  5  Print('Manger Name  :  '||V_Manager);
  6  end;
  7  /
Enter value for p_empno: 7369
Manger Name  :  FORD

PL/SQL procedure successfully completed.

SQL> /
Enter value for p_empno: 7698
Manger Name  :  KING

PL/SQL procedure successfully completed.

SQL> /
Enter value for p_empno: 7934
Manger Name  :  CLARK

PL/SQL procedure successfully completed.



طيب على فرض أدخلنا رقم موظف ليس له رقم مدير ماذا يحصل


SQL> /
Enter value for p_empno: 7839
Manger Name  :  Big Bossss

PL/SQL procedure successfully completed.

الموظف الذي ليس له مدير هو المدير الرئيسي


كلام جميل الان بعد هذا الشرح للكل من الـــProcdeure والـــFunction هل لاحظتم ما هي الفروق بينهم

في الدرس القادم سأعطي شرح بسيط للمقارنة بين الــProcedure والــ Function في حالة عدم وجود اسئلة .

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#67 khaledhere

khaledhere

    مشترك

  • الأعضــاء
  • 55 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 January 2010 - 08:11 PM

منتظر بقيه الدروس ان شاء الله جزاك الله خيرا
ومنتظر الامثله داخل الفورمز ان شاء لله

#68 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 31 January 2010 - 02:43 PM

منتظر بقيه الدروس ان شاء الله جزاك الله خيرا
ومنتظر الامثله داخل الفورمز ان شاء لله


الله يبارك فيك اخي خالد

وانا اسف على التأخير

أن شاء الله سأتابع الدروس اليوم

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#69 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 02 February 2010 - 03:27 PM

السلام عليكم ورحمة الله وبركاته

اخواني الاعزاء سأتابع الدروس ....

في الدرس السابق شرحنا الــــFunction وقلنا سنكتب مقارنة بسيطة بين الـــProcedure والـــFunction اولاد العم .

بسم الله نبدء

من خلال الدروس السابقة للــــProcedure والــــFunction نستنتج بعض الفروق كالتالي .
function				  procedure

Parametrs Mode	 In							  In   , In Out  , Out

Return  Value		 Always					   Return  One Value Or More Value Or No Value

Calling				   SQL AND PL/SQL		PL/SQL

USE						 Calculation			  Mult Task


وفي الدرس القادم سنكتب بعض الامثلة على تطبيق الـــProcedure والـــFunction على الـــForm

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#70 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 02 February 2010 - 03:53 PM

السلام عليكم ورحمة الله وبركاته

أخواني الاعزاء سنبدء اليوم بكتابة بعض الامثلة على الـــــ Function والـــــProcedure وتطبيقها على الفورم .

بسم الله نبدء ...

مثال على أستخدام الـــProcedure في الفورم .


على سبيل المثال عندي شاشة الخاصة بمواعيد مراجعين الاطباء

ومن ضمن هذه الشاشة يوجد بيانات المراجعين وتأتي هذه البيانات

عند وضع رقم المريض .

طيب في حالة مريض جديد لا اريد الخروج من شاشة المواعيد

والذهاب الى الشاشة الخاصة بالمراجعين واضافة مريض

اريد ان اضيف بيانات المريض في شاشة المواعيد وبعد ان اعمل

تخزين لشاشة المواعيد يعمل اضافة مباشرة للبيانات المريض

في جدول الخاص بالمراجعين .

نبدء في كتابة الـــProcedure



طبعا نذهب الى Program Unit ونقوم بأنشاء Procedure وأسمه Insert_Pat ثم نكبس OK

فيطلع الناتج كالتالي


PROCEDURE Insert_Pat IS
BEGIN
  
END;
ثم تقوم بعملية التعديل والاضافة على الــ Procedure للقيام بالوظيفة المطلوبة منه

كالتالي .....


Peocedure Insert_Pat(P_Pat_Id In Out Number,P_Pat_Name In Varchar2,P_Address In Varchar2,P_Mobil In number)
Is
V_Pat_Id number;
Begin
Select Nvl(Max(Pat_id),0,)+1
Into V_Pat_Id
From Patient;
Insert Into Patient(P_Id,P_Name,Address,Mobil)
Values(P_Pat_Id,P_Pat_Name,P_Address,P_Mobil);
Commit;
End;

الان نعمل Button جديد وننشأ Trigger جديد وهو When_Button_Preessed

ونستدعي داخله الــProcedure كالتالي .


Insert_Pat(:Trysts.Pat_Id,:Trysts.Name,:Trysts.Add,:Trysts.Mobil);

هنا عملنا اضافة لمرض جديد من شاشة المواعيد .

طبعا نعمل اضافة للبيانات التي نريد وبعدها نرجع للشاشة المراجعين ونعمل على تعديل البيانات .



مثال جديد على أستخدام الــــــــــــProcedure .

عندي شاشة فواتير ماستر وديتل .

اول شي اعمل جدولين خاصين بشاشة فواتير



SQL> Create Table Inv
  2	  (
  3	 inv_no number,
  4	 inv_year number,
  5	 total_inv number
  6	   );

Table created.

SQL> alter table inv
  2  add constraint inv_pk primary key (inv_no,inv_year);

Table altered.

SQL> Create Table Inv_det
  2	   (
  3	  inv_no number,
  4	  inv_year number,
  5	   item_no number,
  6	   Serail_Id  number,
  7	   qty number,
  8	   sale_price number,
  9	  sum_sale number
 10	);

Table created.
SQL> alter table inv_det
  2	 add constraint inv_det_pk  primary key (INV_NO,INV_YEAR,ITEM_NO,SERAIL_ID);

Table altered.

SQL>   alter table inv_det
  2	   add constraint inv_det_fk foreign key(inv_no,inv_year)
  3	  references inv(inv_no,inv_year);

Table altered.


وبعد الربط بين الجدولين وتنسيق الفورم سنكتب Procedure يحسب ناتج ضرب الكمية والسعر

واخراج قيمة الفاتورة عن طريق جمع ناتج الضرب لكل المواد .

طبعا نذهب الى Program Unit ونقوم بأنشاء Procedure وأسمه Total_Inv ثم نكبس OK

فيطلع الناتج كالتالي ....


PROCEDURE Total_Inv IS
BEGIN
  
END;


ثم تقوم بعملية التعديل والاضافة على الــ Procedure للقيام بالوظيفة المطلوبة منه

كالتالي .


PROCEDURE Total_Inv IS
V_qty_sale number;
v_tot number;
BEGIN
	 GO_BLOCK('INV_DET');
	FIRST_RECORD;
	loop
	 V_qty_sale:=nvl(:inv_det.qty,0)*nvl(:inv_det.sale_price,0);
   :inv_det.sum_sale:= V_qty_sale;
   v_tot:=nvl(v_tot,0)+V_qty_sale;
   :inv.TOTAL_INV:= v_tot;
   exit when :system.last_record='TRUE';
   NEXT_RECORD;
	END LOOP;
 
	 END;

الان نعمل Button جديد وننشأ Trigger جديد وهو When_Button_Preessed

ونستدعي داخله الــProcedure كالتالي .

فقط تكتب اسم الــProcedure Total_Inv ;

وعند عمل Run للفــورم وكتابة القيم نكبس على الــ Button ويعطينا ناتج ضرب الكمية

مع السعر ويعطينا المجموع الكـلـي للفاتورة بأذن الله .



ألان اريد اريد ان اكتب مثال على الـــFunction وتطبيقه على الفورم .

اريد ان اكتب Function يمنعني من التعديل على الفاتورة

بحيث اذا كانت الفاتورة مخزنة يخرج مسج يخبرني غير مسموح التعديل على الفاتورة

اما اذا كانت الفاتورة خير مخزنة يسمح لي بالتعديل عليها كالتالي .

نذهب الى Program Units ونقوم بأنشاء الــFunction بأسم Check_Inv

فيطلع الناتج كالتالي ....


FUNCTION check_inv RETURN _ IS
BEGIN
  
END;


ثم تقوم بعملية التعديل والاضافة على الــ Function للقيام بالوظيفة المطلوبة منه كالتالي .....

FUNCTION check_inv 
RETURN boolean 
IS
v_inv_no number;
BEGIN
	select inv_no
	into v_inv_no
	from inv
	where inv_no=:inv.inv_no;
	message('Can Not Update The Invoice...');
	message(' ');
	return false;
exception
	when no_data_found then
	return true;
	when others then
		message('Can Not Update The Invoice...');
	message(' ');
	return false;
END;

نستدعي هذا الـــFunction

نكتب في الــButton الخاص بالــProcedure الذي يقوم بالحسابات

وأسمه Total_Inv.

ونستدعي بهذا الشكل .


if check_inv then
Total_Inv;
end if;



يعني اذا الــ Function الخاص بالتأكد من الفاتورة قام بوظفته بشكل صحيح

أذهب ونفذ الـــProcedure الخاص بعملية الحسابات.




في الدرس القادم في حالة عدم وجود اسئلة

سنتحدث عن علاقة اولاد العم وصلة القرابة وكيف يرتبط اولاد العم تحت اسم عائلة واحدة

وحقوق وواجبات كل فرد في هذه العائلات ...

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#71 sajahs

sajahs

    عضو

  • الأعضــاء
  • 2 مشاركة

تاريخ المشاركة 08 February 2010 - 04:23 PM

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين

خيو انا لسه جديده وعم بتعلم منك ومرسي كتير لانو اسلوبك سهل ومفهوم انا لسه باديه درس درس بس ما عم بعرف وين بدي طبئ الكودات وشو البرنامج اللي
اكتب فيو هاي الكودات؟؟؟
مرسي كتير غلبتك

#72 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 08 February 2010 - 05:40 PM

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين

خيو انا لسه جديده وعم بتعلم منك ومرسي كتير لانو اسلوبك سهل ومفهوم انا لسه باديه درس درس بس ما عم بعرف وين بدي طبئ الكودات وشو البرنامج اللي
اكتب فيو هاي الكودات؟؟؟
مرسي كتير غلبتك



اهلا وسهلا بالاخت الفاضلة ....

مشكورة اختي على دعائك

اول اتمنى لكي بداية مشرقة بأذن الله في عالم اوراكل

ثاني شي اختي الفاضلة هل انتي على دراية ما هي لغة اوراكل وما هي خصائصها

ثالث شي هذه الاكود تتطبق على برنامج SQL Plus الخاص بقاعدة البيانات اوراكل

او بأستطاعتك العمل على احد البرناج المساعدة مثل Benthic او غيرها من البرامج

وانا على الاستعداد اختي الفاضلة لأي استفسار .


:blink: :rolleyes: :blink:

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#73 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 10 February 2010 - 09:37 PM

السلام عليكم ورحمة الله وبركاته

أخواني وأخواتي الاعزاء قلنا في الدرس السابق سنتحدث عن علاقة اولاد العمومة ((( العائلة )))

علاقة اولاد العم الـــــProcedure والـــــFunction .

بسم الله نبدء ......


مقدمة بسيطة....

بعد تعرفنا على اولاد العم يجب هنالك تنظيم لاولاد العم ومعرفة كل واحد لأي عائلة ينتمي .

مثال بسيط للتوضيح :عندي مجموعة من الاسماء كالتالي :

1) احمد الوزني 2) فيصل عصفور 3) ايمن الوزني

4)محمد البشيتي 5)محمود الوزني 6) احمد البشيتي

7) حمزة عصفور 8) عمر البشيتي 9)عبدالله عصفور

10) زاهد عصفور 11)حسن البشيتي

كما لاحظنا الاسماء مختلفة ولكن اسماء العائلات مكررة .

لنقوم بعملية تنظيم نفرز هذه الاسماء من خلال أسماء العائلات .

اولا عندي اسماء 3 عائلات وهي الوزني والبشيتي و عصفور .

والتنظيم كالتالي .

1) الوزني (احمد , أيمن , محمود ) .

2) البشيتي (عمر, احمد , محمد ,حسين).

3 ) عصفور (فيصل,حمزة ,عبدالله , زاهد).

اذا الموضوع بسيط رتبنا الاسماء بالترتيب حسب اسم العائلة .

مثال بسيط أخر : عندي عدد معين من الافراد وكل فرد من عائلة وأريد ان أوزع مهام لكل فرد حسب العائلة

لانه كل عائلة مشهورة بشيئ معين فمثلا العائلة ص مشهورة بالحسابات والعائلة س مشهورة بجمع المال

والعائلة ك مشهورة بحمل الاثقال والعائلة م مشهورة بالبناء ....وهكذا


وبالنفس المفهوم عندنا في الـــProcedure والـــFunction اذا يوجد مجموعة كبيرة من العائلات

ومن هذه العائلات على سبيل المثال .

1 ) المالية .

ويوجد في هذه العائلة مجموعة من اولاد العم ((( Procedure و Function )))

أ ) حسابات الموردين.

ب ) حسابات العملاء .

ج ) الاصول الثابتة .

د ) دليل الحسابات .

ه ) الاوراق البنكية .

وغيرهم من الــــProcedure والــFunction .

2 ) الموارد البشرية HR .

ويوجد في هذه العائلة مجموعة من اولاد العم ((( Procedure و Function )))

أ ) التدريب .

ب ) احتسابات الرواتب .

ج ) احتسابات الاجازات والمغادرات .

د ) احتساب الدوام الاضافي .

ه ) الحضور والانصراف .

وغيرهم من الــــProcedure والــFunction .

3 ) ادارة سلسلة الامدادات.

ويوجد في هذه العائلة مجموعة من اولاد العم ((( Procedure و Function )))

أ ) SCM المخزون .

ب ) متابعة الموردين .

ج ) ادخال الاوامر .

د ) المشتريات .

وغيرهم من الــــProcedure والــFunction .

ويوجد الكثير من العائلات ( المخازن , الحسابات , الموارد البشرية ....الخ)

اذا انا بأختصار شديد يجب ان اضع كل الــFunction والـــProcedure الخاصة بمهام معينة في عائلة واحدة بأسم مميز.

يعني عائلة المحاسبة يوجد فيها فقط الــFunction والــProcedure الخاصة بالمحاسبة فقط .

وعائلة المبيعات يوجد فيها فقط الــFunction والــProcedure الخاصة بالمبيعات فقط .

وعائلة المشتريات يوجد فيها فقط الــFunction والــProcedure الخاصة المشتريات فقط .

وهكذا ....

طيب في النهاية اكيد اوراكل عرفت هذه العائلة بتعريف معين .

اتدرون بماذا تعرف هذه العائلة في اوراكل .

انه الـــــــــــــPackage وفي السابق عرفنا الــPackage .

وهنالك تعريف اخر للـــPackage وهو عبارة عن عملية تنظيمية ينظم عمل الــProcedure والــFunction .

الان سنشرح كيفك كتابة الــPackage .

بسم الله نبدء .

اول شي يجب معرفته الـــPackage يكتب على خطوتين .



الخطوة الاولى وهي الـــCreate Specification وتحتوي على الــHeder .

الخطوة الثانية وهي الـــCreate Body .

كيفية كتابة الخطوة الاولى .........

كتابة اسماء الــProcedure والـــFunction مع تمرير البراميتر في حالة وجود البراميتر .



Create Or Replace Package Package_Name Is
Procedure_Name(P1 In Number,P2 Out Number,.......);
Procedure_Name(P1 In Out Varchar2);
Function_Name(P1 In Varchar2)
Return Varchar2;				 
End;

كيفية كتابة الخطوة الثانية .........

كتابة اسماء الــProcedure والـــFunction مع كتابة محتوى الــProcedure والــFunction كاملا .



Create Or Replace Package Body Package_Name Is
Procedure_Name(P1 In Number,P2 Out Number,.......)
 هنا نكتب محتوى الــProcedure كاملا 
.
.
.
End Procedure_Name; 
Procedure_Name(P1 In Out Varchar2)
هنا نكتب محتوى الــProcedure كاملا 
.
.
.
End Procedure_Name;
Function_Name(P1 In Varchar2)
Return Varchar2
is
هنا نكتب محتوى الـــFunction  كاملا
.
.
.				 
End Function_Name;

End .  نهايـــة الـــــــPackage

الان سنكتب مثال على الــPackage .

بسم الله نبدء .

اريد ان اكتب باكج يحتوي على Procedure يحسب ناتج جمع رقمين وProcedure اعطيه رقم موظف

ويعطيني اسمه مع راتبه واريد ان اكتب Function اعطيه رقم القسم ويعطيني اسم القسم .


الجزء الاولى .



SQL> SET SERVEROUTPUT ON
SQL> SET VERIFY OFF
SQL> CREATE OR REPLACE PACKAGE MY_PACK IS
  2  PROCEDURE CAL(P_NO1 IN  NUMBER,P_NO2 IN NUMBER);
  3  procedure p_emp(p_empno in number);
  4  FUNCTION F_DEPT(p_deptno  in number)
  5  RETURN VARCHAR2;
  6  END;
  7  /

Package created.

الخطوة الثانية .


SQL>  CREATE OR REPLACE PACKAGE BODY MY_PACK IS
  2  PROCEDURE CAL(P_NO1 IN  NUMBER,P_NO2 IN NUMBER)
  3  IS
  4  V NUMBER;
  5  BEGIN
  6  V:=P_NO1+P_NO2;
  7  DBMS_OUTPUT.PUT_LINE('SUM  ='||V);
  8  END CAL;
  9  procedure p_emp(p_empno in number)
 10   is
 11   cursor c is
 12   select *
 13   from emp
 14   where empno=p_empno;
 15   x c%rowtype;
 16   begin
 17   open c;
 18   fetch c
 19   into x;
 20   if c%notfound then
 21   dbms_output.put_line('No Data found ....');
 22   end if;
 23   dbms_output.put_line('Name  '||x.ename||' Salary '||x.sal);
 24   close c;
 25  END P_EMP;
 26  FUNCTION F_DEPT(p_deptno  in number)
 27   return varchar2
 28   is
 29  v_name varchar2(50);
 30  begin
 31  select  dname
 32  into v_name
 33  from  dept
 34  where deptno=p_deptno;
 35  dbms_output.put_line('Name  Dpet '||v_name);
 36  exception
 37  when  no_data_found then
 38  dbms_output.put_line('No Data found ....');
 39  return  v_name;
 40  END F_DEPT;
 41  END;
 42  /

Package body created.


الان نقوم بأستدعاء الــProcedure والـــFunction عن طريق الـــــــPackage .

كالتالي ..............

سنقوم بأستدعاء الـــProcedure الخاص بــعملية جمع رقمين .


SQL> BEGIN
  2  MY_PACK.CAL(&P_NO1,&P_NO2);
  3  END;
  4  /
Enter value for p_no1: 50
Enter value for p_no2: 80
SUM =130

PL/SQL procedure successfully completed.

سنقوم بأستدعاء الـــProcedure الخاص بأسم وراتب الموظف .


SQL> BEGIN
  2  MY_PACK.P_EMP(&P_EMP);
  3  END;
  4  /
Enter value for p_emp: 7900
Name  JAMES Salary 950

PL/SQL procedure successfully completed.

سنقوم بأستدعاء الـــFunction الخاص بأسم القسم .

SQL> DECLARE
  2  V_DNAME VARCHAR2(100);
  3  BEGIN
  4  V_DNAME:=MY_PACK.F_DEPT(&P_DEPTNO);
  5  END;
  6  /
Enter value for p_deptno: 10
Name  Dpet ACCOUNTING

كلام جميل جدااااااااااااااا وجميع الــProcedure والــFunction اشتغلت عن طريق الــPackage .

طيب في حالة ما عرفنا الــProcedure او الــFunction في مرحلة الثانية الــBody وما عرفناه في المرحلة الاولى Specification

هل نستطيع استخدام هذا الــProcedure او الــFunction من خلال الــPackage .

لنر هذا المثال .



SQL> SET SERVEROUTPUT ON
SQL> SET VERIFY OFF
SQL> CREATE OR REPLACE PACKAGE MY_PACK IS
  2  PROCEDURE CAL(P_NO1 IN  NUMBER,P_NO2 IN NUMBER);
  3  procedure p_emp(p_empno in number);
  4  FUNCTION F_DEPT(p_deptno  in number)
  5  RETURN VARCHAR2;
  6  END;
  7  /

Package created.

SQL>  CREATE OR REPLACE PACKAGE BODY MY_PACK IS
 2  PROCEDURE PRINT(P_TEXT IN  VARCHAR2)
 3  IS
 4  BEGIN
 5  DBMS_OUTPUT.PUT_LINE(P_TEXT);
 6  END;
 7	 PROCEDURE CAL(P_NO1 IN  NUMBER,P_NO2 IN NUMBER)
 8	 IS
 9	  V NUMBER;
10	  BEGIN
11	 V:=P_NO1+P_NO2;
12	 DBMS_OUTPUT.PUT_LINE('SUM  ='||V);
13	 END CAL;
14	procedure p_emp(p_empno in number)
15	  is
16	   cursor c is
17	 select *
18	   from emp
19	  where empno=p_empno;
20	   x c%rowtype;
21	   begin
22	  open c;
23	  fetch c
24	   into x;
25	   if c%notfound then
26	  dbms_output.put_line('No Data found ....');
27	  end if;
28	  dbms_output.put_line('Name  '||x.ename||' Salary '||x.sal);
29	  close c;
30	 END P_EMP;
31	 FUNCTION F_DEPT(p_deptno  in number)
32	  return varchar2
33	  is
34	 v_name varchar2(50);
35	 begin
36	 select  dname
37	 into v_name
38	 from  dept
39	 where deptno=p_deptno;
40	 dbms_output.put_line('Name  Dpet '||v_name);
41	 exception
42	 when  no_data_found then
43	 dbms_output.put_line('No Data found ....');
44	 return  v_name;
45	 END F_DEPT;
46*	END;
47  /

ackage body created.

سنجرب كتابة نفس الامثلة السابقة كالتالي .


SQL> BEGIN
  2  MY_PACK.P_EMP(&P_EMP);
  3  END;
  4  /
Enter value for p_emp: 7900
Name  JAMES Salary 950

PL/SQL procedure successfully completed.
-------------------------------------
SQL> DECLARE
  2  V_DNAME VARCHAR2(100);
  3  BEGIN
  4  V_DNAME:=MY_PACK.F_DEPT(&P_DEPTNO);
  5  END;
  6  /
Enter value for p_deptno: 10
Name  Dpet ACCOUNTING

PL/SQL procedure successfully completed.
--------------------------------
SQL> BEGIN
  2  MY_PACK.CAL(&P_NO1,&P_NO2);
  3  END;
  4  /
Enter value for p_no1: 50
Enter value for p_no2: 80
SUM =130

PL/SQL procedure successfully completed.

كلام جميل جداااااااااا اعطاني النتيجة المطلوبة .

طيب الان لنجرب الــProcedure الجديد الذي عرفناه فقط في الـــBody .

اول مرة سأجرب تطبيق هذا الــProcedure لوحده لاني بالاصل كاتبه قبل الــPackage .

لنرى ...........



SQL> BEGIN
  2  PRINT('HOW ARE YOU ...?');
  3  END;
  4  /
HOW ARE YOU ...?

PL/SQL procedure successfully completed.

تم المطلوب بشكل صحيح .

الان اريد استدعاء الــProcedure عن طريق الــPackage لنرى النتيجة .



SQL> BEGIN
  2  MY_PACK .PRINT('HOW ARE YOU ...?');
  3  END;
  4  /
 
BEGIN
*
ERROR at line 1:
ORA-06550: line 2, column 4:
PLS-00302: component 'PRINT' must be declared
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored


طلع لنا Erorr وهذا كلام صحيح في حالة كتابة الــProcedure او الــFunction في الــBody

وعدم تعريفه في الــSpicifcation لا نستطيع التعامل معه الا داخل الــPackage فقط .

والان سأقوم بالتعامل مع الـــProcedure الخاص بعملية الــPrint داخل الـ Package كالتالي .



SQL> ed
Wrote file afiedt.buf

  1  CREATE OR REPLACE PACKAGE BODY MY_PACK IS
  2  PROCEDURE PRINT(P_TEXT IN  VARCHAR2)
  3  IS
  4  BEGIN
  5  DBMS_OUTPUT.PUT_LINE(P_TEXT);
  6  END;
  7	 PROCEDURE CAL(P_NO1 IN  NUMBER,P_NO2 IN NUMBER)
  8	 IS
  9	  V NUMBER;
 10	  BEGIN
 11	 V:=P_NO1+P_NO2;
 12	 print('SUM  ='||V);
 13	 END CAL;
 14	procedure p_emp(p_empno in number)
 15	  is
 16	   cursor c is
 17	 select *
 18	   from emp
 19	  where empno=p_empno;
 20	   x c%rowtype;
 21	   begin
 22	  open c;
 23	  fetch c
 24	   into x;
 25	   if c%notfound then
 26	  print('No Data found ....');
 27	  end if;
 28	  print('Name  '||x.ename||' Salary '||x.sal);
 29	  close c;
 30	 END P_EMP;
 31	 FUNCTION F_DEPT(p_deptno  in number)
 32	  return varchar2
 33	  is
 34	 v_name varchar2(50);
 35	 begin
 36	 select  dname
 37	 into v_name
 38	 from  dept
 39	 where deptno=p_deptno;
 40	 print('Name  Dpet '||v_name);
 41	 exception
 42	 when  no_data_found then
 43	 print('No Data found ....');
 44	 return  v_name;
 45	 END F_DEPT;
 46*	END;
SQL> /

Package body created.

سنقوم بعملية استدعاء الــProcedure والــFunction مرة اخرى لنرى هل الــPrint اشتغلت ام لا .


SQL> BEGIN
  2  MY_PACK.P_EMP(&P_EMP);
  3  END;
  4  /
Enter value for p_emp: 7900
Name  JAMES Salary 950

PL/SQL procedure successfully completed.
-------------------------------------
SQL> DECLARE
  2  V_DNAME VARCHAR2(100);
  3  BEGIN
  4  V_DNAME:=MY_PACK.F_DEPT(&P_DEPTNO);
  5  END;
  6  /
Enter value for p_deptno: 10
Name  Dpet ACCOUNTING

PL/SQL procedure successfully completed.
--------------------------------
SQL> BEGIN
  2  MY_PACK.CAL(&P_NO1,&P_NO2);
  3  END;
  4  /
Enter value for p_no1: 50
Enter value for p_no2: 80
SUM =130

PL/SQL procedure successfully completed.

الحمدلله اشتغلت الــPrint .

إن شاء الله اذا لم يكن هنالك اسئلة سنكمل بأذن الله اخر درس في دروس الـــPL/SQL .

أتمنى ان اكون قد اوصلت معلومة صحيحة وبشكل سهل .

نلتقي في الدرس القادم بأذن الله .

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#74 ASALLAM

ASALLAM

    مشترك

  • الأعضــاء
  • 59 مشاركة

تاريخ المشاركة 14 February 2010 - 10:35 PM

شكرآ لك وبارك الله لك وزادك علماً ينتفع به

#75 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 14 February 2010 - 11:13 PM

السلام عليكم ورحمة الله

اخى الفاضل

جهد متميز ... من عضو متميز

شكرا لك على الاسلوب المبسط فى الشرح

شكرا لك على الجهد المبذول

شكرا لك على الاستمرار وحب العطاء


جزاك الله خيرا

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين


لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....