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

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

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

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


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

#121 hannona

hannona

    عضو

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

تاريخ المشاركة 30 May 2011 - 11:48 PM

اليوم سنبدء ببعض الامثلة البسيطة .

ولكن قبل ذلك يجب معرفة بعض الامور بالنسبة للغة الــــــPL/SQL

1) يجب قبل كتابة اي برنامج في هذه اللغة كتابة هذه الجملة set serveroutput on

لكي تظهر نتيجة اي برناج على الشاشة وبدون هذه الجملة لن تظهر اي نتيجة على الشاشة

وبالامكان تجربة البرنامج مع او بدون هذه الجملة .

طبعا تكتب هذه الجملة مرة واحدة في كل مرة نفتح فيها شاشة ال Oracle SQL*Plus

2) يجب ان ينهتي أي امر في هذه اللغة بـــ ; و بعد كل تعريف موجود في البرنامج تنتهي بــــ ;

3) لأدخال اي قيمة في البرنامج يوضع & بعد كتابة المتغير مع اشارة :=

على سبيل المثال عندي متغير واسمه x واريد ان ادخل قيمة x اكتب التالي x:=&x

طبعا بعد & ممكن اكتب اي شي انا اريده يعني ممكن ان اكتب x:=&sal;

4) dbms_output.put_line(' '); هذه الجملة لاخراج النتائج على الشاشة

5) لاعادة تنفيذ البرنامج نكتب / ثم Enter


طبعا هذه الامور ليست كل شيئ وعند اللزوم يمكن ان نحتاج للأوامر أخرى توضح في وقتها .

نبدء في اول مثال .

اريد كتابة برنامج يقسم رقمين ويعطيني الناتج ((( برنامج سهل جداااا)))



SQL> set serveroutput on
SQL>  declare
  2   a number;
  3   b number;
  4   c number;
  5   begin
  6   a:=&a;
  7   b:=&b;
  8   c:=a/b;
  9   dbms_output.put_line('Result Is  '||c);
 10  end;
 11  /
Enter value for a: 49
old   6:  a:=&a;
new   6:  a:=49;
Enter value for b: 7
old   7:  b:=&b;
new   7:  b:=7;
Result Is  7

PL/SQL procedure successfully completed.


الحمدلله البرناج يعمل صحيح ولكن انا لا اريد ان تظهر كلمة old وكلمة new في كل مرة

الموضوع مزعج لذلك اقوم بكتابة هذا الامر لتخلص من وجود هذه الكلمات وهو SQL> set verify off

طبعا بكتب هذا الامر في اي مكان ولكن يستحسن ان يكتب بعد الامر SQL> set serveroutput on

وهذه هي النتيجة
SQL> set verify off

SQL> /
Enter value for a: 49
Enter value for b: 7
Result Is  7

PL/SQL procedure successfully completed.


طيب في حالة اني قسمت على الرقم صفر ما هي النتيجة ...؟

SQL> /
Enter value for a: 15
Enter value for b: 0
 declare
*
ERROR at line 1:
ORA-01476: divisor is equal to zero
ORA-06512: at line 8

عند القسمة على صفر طلع لنا Error والمستخدم العادي لا يعرف لماذا هناك خطأ ولمعالجة هذا الموضوع نستخدم الــــ Exception كالتالي
SQL>  declare
  2   a number;
  3   b number;
  4   c number;
  5   begin
  6   a:=&a;
  7   b:=&b;
  8   c:=a/b;
  9   dbms_output.put_line('Result Is  '||c);
 10   exception
 11   when zero_divide then
 12	dbms_output.put_line('You Can Not Divide By Zero   ..');
 13  end;
 14  /
Enter value for a: 15
Enter value for b: 0
You Can Not Divide By Zero   ..

PL/SQL procedure successfully completed.

كتبنا في ال Exception رسالة للمستخدم انه لا يستطيع أدخال الرقم صفر في القسمة .

طيب في حالة غلط المستخدم وادخل بدل الرقم حرف ماذا يحصل ...؟
SQL> /
Enter value for a: 15
Enter value for b: 'm'
 declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 7

عند أستخدام حرف بدل رقم طلع لنا Error والمستخدم العادي لا يعرف لماذا هناك خطأ ولمعالجة هذا الموضوع نستخدم الــــ Exception كالتالي
SQL> ed
  1   declare
  2   a number;
  3   b number;
  4   c number;
  5   begin
  6   a:=&a;
  7   b:=&b;
  8   c:=a/b;
  9   dbms_output.put_line('Result Is  '||c);
 10   exception
 11   when zero_divide then
 12	dbms_output.put_line('You Can Not Divide By Zero   ..');
 13	when value_error then
 14*  dbms_output.put_line('Pleas Enter Number   ..');
 15  end;
 16  /
Enter value for a: 15
Enter value for b: 'm'
Please Enter Number   ...

PL/SQL procedure successfully completed.

كتبنا في ال Exception رسالة للمستخدم انه لا يستطيع أدخال الا رقم ولا يستطيع أدخال حرف في القسمة .

طبعا كل سخص يصيغ الرسالة باسلوبه وبطريقة التي يراها مناسبة .

طبعا يوجد انواع اخرى من الـــError وحلولها وإن شاء الله في الدروس القادمة سنوضحها .

طبعا انا اسف لأني بطيئ في الشرح ولكن انا اريد ان أمشي خطوة خطوة والتاكد من وضوح كل خطوة .

اتمنى ان يكون اسلوبي سهل وسلس.



#122 hannona

hannona

    عضو

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

تاريخ المشاركة 30 May 2011 - 11:49 PM

اليوم سنبدء ببعض الامثلة البسيطة .

ولكن قبل ذلك يجب معرفة بعض الامور بالنسبة للغة الــــــPL/SQL

1) يجب قبل كتابة اي برنامج في هذه اللغة كتابة هذه الجملة set serveroutput on

لكي تظهر نتيجة اي برناج على الشاشة وبدون هذه الجملة لن تظهر اي نتيجة على الشاشة

وبالامكان تجربة البرنامج مع او بدون هذه الجملة .

طبعا تكتب هذه الجملة مرة واحدة في كل مرة نفتح فيها شاشة ال Oracle SQL*Plus

2) يجب ان ينهتي أي امر في هذه اللغة بـــ ; و بعد كل تعريف موجود في البرنامج تنتهي بــــ ;

3) لأدخال اي قيمة في البرنامج يوضع & بعد كتابة المتغير مع اشارة :=

على سبيل المثال عندي متغير واسمه x واريد ان ادخل قيمة x اكتب التالي x:=&x

طبعا بعد & ممكن اكتب اي شي انا اريده يعني ممكن ان اكتب x:=&sal;

4) dbms_output.put_line(' '); هذه الجملة لاخراج النتائج على الشاشة

5) لاعادة تنفيذ البرنامج نكتب / ثم Enter


طبعا هذه الامور ليست كل شيئ وعند اللزوم يمكن ان نحتاج للأوامر أخرى توضح في وقتها .

نبدء في اول مثال .

اريد كتابة برنامج يقسم رقمين ويعطيني الناتج ((( برنامج سهل جداااا)))



SQL> set serveroutput on
SQL>  declare
  2   a number;
  3   b number;
  4   c number;
  5   begin
  6   a:=&a;
  7   b:=&b;
  8   c:=a/b;
  9   dbms_output.put_line('Result Is  '||c);
 10  end;
 11  /
Enter value for a: 49
old   6:  a:=&a;
new   6:  a:=49;
Enter value for b: 7
old   7:  b:=&b;
new   7:  b:=7;
Result Is  7

PL/SQL procedure successfully completed.


الحمدلله البرناج يعمل صحيح ولكن انا لا اريد ان تظهر كلمة old وكلمة new في كل مرة

الموضوع مزعج لذلك اقوم بكتابة هذا الامر لتخلص من وجود هذه الكلمات وهو SQL> set verify off

طبعا بكتب هذا الامر في اي مكان ولكن يستحسن ان يكتب بعد الامر SQL> set serveroutput on

وهذه هي النتيجة
SQL> set verify off

SQL> /
Enter value for a: 49
Enter value for b: 7
Result Is  7

PL/SQL procedure successfully completed.


طيب في حالة اني قسمت على الرقم صفر ما هي النتيجة ...؟

SQL> /
Enter value for a: 15
Enter value for b: 0
 declare
*
ERROR at line 1:
ORA-01476: divisor is equal to zero
ORA-06512: at line 8

عند القسمة على صفر طلع لنا Error والمستخدم العادي لا يعرف لماذا هناك خطأ ولمعالجة هذا الموضوع نستخدم الــــ Exception كالتالي
SQL>  declare
  2   a number;
  3   b number;
  4   c number;
  5   begin
  6   a:=&a;
  7   b:=&b;
  8   c:=a/b;
  9   dbms_output.put_line('Result Is  '||c);
 10   exception
 11   when zero_divide then
 12	dbms_output.put_line('You Can Not Divide By Zero   ..');
 13  end;
 14  /
Enter value for a: 15
Enter value for b: 0
You Can Not Divide By Zero   ..

PL/SQL procedure successfully completed.

كتبنا في ال Exception رسالة للمستخدم انه لا يستطيع أدخال الرقم صفر في القسمة .

طيب في حالة غلط المستخدم وادخل بدل الرقم حرف ماذا يحصل ...؟
SQL> /
Enter value for a: 15
Enter value for b: 'm'
 declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 7

عند أستخدام حرف بدل رقم طلع لنا Error والمستخدم العادي لا يعرف لماذا هناك خطأ ولمعالجة هذا الموضوع نستخدم الــــ Exception كالتالي
SQL> ed
  1   declare
  2   a number;
  3   b number;
  4   c number;
  5   begin
  6   a:=&a;
  7   b:=&b;
  8   c:=a/b;
  9   dbms_output.put_line('Result Is  '||c);
 10   exception
 11   when zero_divide then
 12	dbms_output.put_line('You Can Not Divide By Zero   ..');
 13	when value_error then
 14*  dbms_output.put_line('Pleas Enter Number   ..');
 15  end;
 16  /
Enter value for a: 15
Enter value for b: 'm'
Please Enter Number   ...

PL/SQL procedure successfully completed.

كتبنا في ال Exception رسالة للمستخدم انه لا يستطيع أدخال الا رقم ولا يستطيع أدخال حرف في القسمة .

طبعا كل سخص يصيغ الرسالة باسلوبه وبطريقة التي يراها مناسبة .

طبعا يوجد انواع اخرى من الـــError وحلولها وإن شاء الله في الدروس القادمة سنوضحها .

طبعا انا اسف لأني بطيئ في الشرح ولكن انا اريد ان أمشي خطوة خطوة والتاكد من وضوح كل خطوة .

اتمنى ان يكون اسلوبي سهل وسلس.



#123 hannona

hannona

    عضو

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

تاريخ المشاركة 30 May 2011 - 11:55 PM

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

#124 abdoulghaffar

abdoulghaffar

    مشترك

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

تاريخ المشاركة 16 June 2011 - 12:21 PM

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

بس هذا هو ال pl spq

جزاك الله خير والله على الشرح الرايح والله يوفقك دنيا واخره على هذا العمل الخير

#125 F-15 S

F-15 S

    عضو

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

تاريخ المشاركة 20 June 2011 - 11:29 PM

والله الاكواد هذي اول مرة اشووفها يازينك ياالكلية اكوادك سهلةوممتعة أما اللي اشوفه في المنتديات والمواقع غير اللي حنا ندرسه

#126 abdoulghaffar

abdoulghaffar

    مشترك

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

تاريخ المشاركة 21 June 2011 - 04:41 PM

اذا تقدر كمل الدوره ترى ممتازه وندعيلك حبيبي

#127 miash80

miash80

    عضو مميز

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

تاريخ المشاركة 25 July 2011 - 05:09 PM

ان شاء الله في القريب العاجل سأتبع معكم بعض الامثلة المهمة في الحياة العملية

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


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

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

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

 

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

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

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


#128 miash80

miash80

    عضو مميز

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

تاريخ المشاركة 20 October 2011 - 02:43 PM

بأنتظار اسئلتكم وأستفسارتكم اخواني واخواتي الاعزاء .....


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


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

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

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

 

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

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

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


#129 miash80

miash80

    عضو مميز

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

تاريخ المشاركة 20 October 2011 - 02:48 PM

والله الاكواد هذي اول مرة اشووفها يازينك ياالكلية اكوادك سهلةوممتعة أما اللي اشوفه في المنتديات والمواقع غير اللي حنا ندرسه



ههههههههههههههههههههههه

طبعا اول مرة تشوفها عشان في الجامعة يعطكوا بس اساسيات الاساسيات واذا اعتمد على اكود في الجامعه عمرك ما تشتغل شي

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


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

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

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

 

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

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

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


#130 Diba

Diba

    مشترك

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

تاريخ المشاركة 09 April 2012 - 01:16 PM

جزاك الله خيرا علي المجهود............ وربنا يذيدك علم

#131 miash80

miash80

    عضو مميز

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

تاريخ المشاركة 13 May 2012 - 11:04 AM

جزاك الله خيرا علي المجهود............ وربنا يذيدك علم


الله يبارك فيك اخي العزيز

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

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


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

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

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

 

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

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

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


#132 rifaat

rifaat

    عضو

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

تاريخ المشاركة 07 July 2012 - 01:26 PM

شكرا جزيلا اخوتى على الشرح وبارك الله فيكم
اريد نوهكم الى توضيح الشرح بطريقة ابسط للتسهيل الفهم

#133 rifaat

rifaat

    عضو

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

تاريخ المشاركة 11 July 2012 - 12:38 PM

الاخوه المشرفين والاعضاء اشكركم كثير على جهدكم المقدر ربنا يجزيكم خير
اوريد توضيح بسيط فى جمله مثلا dbms_output.put_line('name') اريد توضيح الرمز وما يعنيه&#
,وهل يمكن ان يعمل على اوراكل 11g

#134 Amgad

Amgad

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

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

تاريخ المشاركة 12 July 2012 - 12:20 AM

الاخوه المشرفين والاعضاء اشكركم كثير على جهدكم المقدر ربنا يجزيكم خير
اوريد توضيح بسيط فى جمله مثلا dbms_output.put_line('name') اريد توضيح الرمز وما يعنيه&#
,وهل يمكن ان يعمل على اوراكل 11g


نعتذر عن هذا الخطأ الموجود في بعض الأكواد ... واليك هذه المشاركة لكيفية التصحيح

تنويه : تصحيح لخطأ حدث لبعض الرموز الخاصة المستخدمة فى الأوامر ... اثناء تطوير الموقع

http://www.araboug.o...showtopic=48829

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


....


#135 الحبوب13

الحبوب13

    عضو

  • الأعضــاء
  • 17 مشاركة
  • الاسم الأول:majdi
  • اسم العائلة:mahboob
  • البـلـد: Country Flag
  • المنصب الحالي:طالب جامعي

تاريخ المشاركة 26 November 2013 - 08:32 PM

سؤال

اجراء يقوم بحذف الموظفين الذين يقعون في ( location_id (1700  من جدول الادارات  departments ومرتباتهم لاتنحصر بين 1000 و  2999  من جدول الموظفين employees ؟