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

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

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

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


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

#136 almatrix

almatrix

    عضو

  • الأعضــاء
  • 45 مشاركة
  • الاسم الأول:محمد
  • اسم العائلة:الزمزمي
  • البـلـد: Country Flag
  • الاهتمامات:oracle , abobe photoshop , coreldraw , adobe illustrator

تاريخ المشاركة 25 October 2014 - 11:21 AM

سلام عليكم عاوز اسالكم عن معني
Sum(9,3) in plsql what ماهو معني) 9,3) بين الاقواس

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا


#137 hamdan alsbri

hamdan alsbri

    عضو

  • الأعضــاء
  • 7 مشاركة
  • الاسم الأول:hamdan
  • اسم العائلة:Yemen
  • البـلـد: Country Flag
  • المنصب الحالي:طالب

تاريخ المشاركة 07 December 2014 - 05:28 PM

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

بـــــــــــــــــــــــــــــ الله ــــــــــــــ فيـك ــــــــــارك



#138 miash80

miash80

    عضو مميز

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

تاريخ المشاركة 24 January 2016 - 03:26 PM

 

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

بـــــــــــــــــــــــــــــ الله ــــــــــــــ فيـك ــــــــــارك

 

 

  ولك بالمثل أخي العزيز


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


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

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

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

 

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

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

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

 

 

عذراً حلب على تخاذلنا  


#139 miash80

miash80

    عضو مميز

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

تاريخ المشاركة 24 January 2016 - 03:27 PM

موضوع قديم 

 

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


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


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

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

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

 

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

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

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

 

 

عذراً حلب على تخاذلنا  


#140 salwa saleh

salwa saleh

    عضو

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

تاريخ المشاركة 18 January 2017 - 12:09 AM


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

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

اليوم سنقوم بشرح للـــ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 في حالة عدم وجود اسئلة .

  • miash80 معجب بهذا

#141 salwa saleh

salwa saleh

    عضو

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

تاريخ المشاركة 18 January 2017 - 12:11 AM

لو سمحت الامر wrot file afiedt .bufe ما وظيفته

#142 miash80

miash80

    عضو مميز

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

تاريخ المشاركة 18 January 2017 - 12:46 PM

لو سمحت الامر wrot file afiedt .bufe ما وظيفته

 

اخي العزيز  عند كتابة كود معين في بيئة SQL

 

واردنا التعديل على هذا الكود نكتب ED  ثم نضغط أنتر يخرج لنا رسالة Wrote file afiedt.buf

 

لتعديل على هذا الكود

 

وسلامتك


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


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

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

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

 

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

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

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

 

 

عذراً حلب على تخاذلنا