PL/SQL Course ػ ذ ا يبذع ا م ي ك ا غا بم ي ا غك حخغشن ا يذا ؼ اص ا يخ ػ ي خفغ ب و في ا ؼا ا ؼشبي اص غ ف ضذ االعخار ا خ يز ؼا يبذػا وي ي ششا ػ ا سائؼا

ملفّات مشابهة
Microsoft Word - Oracle1

ا زمش ٠ ش األعج ػ ذ خ عال خ ا غزاء ا أصذسد صاسح ا صذخ ا ؼب خ ا زمش ٠ ش االعج ػ ذ خ عال خ ا غزاء جبء وب زب : أ- الفبالد ر ف: 2- ر ا

جامعة المنيا - كلية العلوم Minia University Faculty of Science رشع ١ ت ا غز ا ثب 2019 /2018 ثش ب ح ا ى ١ ١ بء ا س ٠ ١ خ االع ثب غخ ا عشث ١ خ ا ؤ ا عذي

"رنا :صمص لكبلبل روص قصس نا!عييهب : ىل " او!لا! رن ددعلا لوالا امج6 ت راينهال يف رن 0 5 -!فوسمليفدملا طع!هي:! رن ةلمج ضلزث!م قسربلىئممق " زك! ىد

Microsoft Word - C#2

Microsoft Word - Access VBA

فسم التاريخ---امريكا الشمالية المرة الثانية النقل في قارة امريكا الشمالية 1 -خصائص طرق النقل في القارة : ٣ وظذ ثب و د ػخ ا طشم االعب ٤ ت ا عبئظ ا ز خ

Microsoft Word - SolutionOOPFinal2011.doc

شـــــــروحات عاش الاكس بي [Xplover

مختبر البرمجة والتحليل العددي قسم علوم الجو جمل التحكم والشرط والتكرار المرحلة الثانية PROGRAM CONTROL, CONDITION AND LOOP STATEMENTS الجمل الشرطية :-

بسم هللا الرمحن الرحمي تزاسم انمعطياث تجزبت بعىىان: Serial Port إعذاد يارا عىدة تخصص تكىىنىجيا انمعهىماث واالتصاالث بالل جىاجزة

بسم الله الرحمان الرحيم

T:

kh English To recognize the new words. To form meaningful sentences. To understand a short story. Reading : Anchor. Practice reading the story with yo

Microsoft Word - Excel VBA

الثاوويت اإلعذاديت عثمان به عفان المستوى الثالثت ثاووي إعذادي األستار: سعيذ التكفاوي جزارة التلميز سقم 6 Transmission du mouvement ٠ زط ت ا سبخض ا ٢ إ

Eng.M.Abou Elela Ubuntu Install 1 Facebook /Computer Learn Books

اامتح ن الج ي الم حد امتح ن البك ل ري ( الد رة الع دي : ي ني ) 4102 المست ى 0 من س ك البك ل ري الشع أ المس لك مس ك الع الشرعي شعب الع التجريبي شعب الع

ABU DHABI EDUCATION COUNCIL Abu Dhabi Education Zone AL Mountaha Secondary School g-12 science section Mathematics Student Name:.. Section: How Long i

عربي Sign-Code Website Guide فيما يلي دلي ا ل لطلب اسم مستخدم جديد لConnect Sell من خ لل موقع.Sign-Code يسمح لك الموقع بالدخول اإلداري على اسم المستخد

Banner – Hold Information SOAHOLD

Start LINQ

الدالفي خطوة بخطوة

إيناس السيد محمد الشعراوى أستاذ مساعد قسم الحاسب كلية التربية - الجبيل المعلومات الشخصية الجنسية : مصرية تاريخ الميالد / 11 / م القسم علوم الحاس

مجلة الإدارة والاقتصاد/The Journal of Administration & Economics السنة التاسعة والثلاثون– العدد مئة وثمانيه/ 2016

Microsoft Word - 47-Matthew

Cambridge University Press Cambridge IGCSE Arabic as a First Language Coursebook Luma Abdul Hameed, Hanadi Al Amleh, Shoua Fakhouri

Microsoft Word - 50-John

c1

حماضرات يف أوراكل ديفلوبر 6i بسم اهلل الرحمن الرحيم / 1

المحاضرة الثانية

ما هي تقنية XP Mode كيف تركيبها واستخدمها اى قغ اىشع : قغ اىذساعت : إػذاد ح ف ز : عالء الذ ي ال

Template for Program Curriculum Structure

اع اء ا مث ١ ) رغ ١ اال ساق( ظ ١ فح غك ؾاس ٠ ع - اعال / االع ٠ ح سل Tahani Yousif Mobarak Hussein اتشا ١ ع ١ عثذ عضا اتشا ١

دولة فلسطني التخطيط الوطني ادلكاني ادلخطط الوطني حلماية ادلوارد الطبيعية وادلعامل التارخيية 0

Slide 1

Chapter 1

مادة الكمبيوتر وتكنولوجيا المعلومات واالتصاالت الصف الثانى االعدادى الفصل الدراسى االول لغ ا يت : عبارة عن صفحة ويب Web Page أو أكثر مترابطة مع بعضها

المحاضرة رقم (1)

الوحدة التاسعة

المحاضرة الخامست نظرياث التاصر في المركباث التناسقيت Bonding Theories in Coordination Compounds Chain Theorie ظش ٠ خ ا غ غ خ مذ وب ذ فىشح ا زىبفؤ ا شث

Basic Invoice Template for Word

الم ب س ط ة الع ر ب ي ة الت ر ج م ة Language: العربية (Arabic) Provided by: Bible League International. Copyright and Permission to Copy Taken from th


Stat 111 Ch 2 محمد عمران السنة التحضيرية رياضيات واحصاء

اثراء مخزون سمك الهامور

Principles of C++ (Precedence)

التاريخ: االمتحان النهائي لمساق برمجة متقدمة תכנות מתקדם موعد أ الزمن: ساعتان فقط الخميس 2017/7/27 )10 عالمات( السؤال األول for او )while الالزمة لما

اإل س الم ية ال ترب ية لاأل و ال صف المجال 1. الوحي اإللهي 2. العقيدة اإلسالمية 3. قيم اإلسالم وآدابه 4. أحكام اإلسالم ومقاصدها 5. السيرة والشخصيات 5.

MEI ARABIC 201 SYLLABUS Instructor Name: Phone: MEI Phone: (202) MEI Middle East Institute Arabic 201 Interm

رذر ص يصغر عهى ان عبد فط ن ج ب جبد ث ئخ جبر خ فط ن ج ب د ا دجه بد يذخم ان االشراف انزرث عهى فص اجز بع رك ن ج ب رعه ى ي كر ث ن ج الفمبر بد ي اد األرض ك

PowerPoint Presentation

2010 ١ ٠ كخ ب الرسم الب ان االقتصاد الفعلي: رش ١ ش ث ١ ب بد ب ٠ إ اعز شاس ا زؼبف االلزظبد سغ رزثزة أداء ؼظ ا ؤششاد ا شئ ١ غ ١ خ ػ أعبط ش ش إال أ ب رظ

Microsoft Word - جافا 2 نهائى

الجمهورية الجزائرية الديمقراطية الشعبية République Algérienne Démocratique et Populaire Ministère de l Enseignement Supérieur et de la Recherche Scien

خطـــــة المركــــــز التدريبيـــــة خلال شهر كانون ثاني من عام 2004

دور ا ا ا ا ى ا ب ا رس ا ر م د إ ا أ أ در ن ا - ا دان ا ذ ا ا ر أ ا

د. ط در ءة ز ا ت ا دزة (درا ا ا ت) د. ط در را ر ا م م ا ا ا : ا ت ا ا ا م وا ا ي و إ ى ا ت ا ا ا دو إ و دة ا و أ اد ا. و ف ا ا إ وا ا ت ا دزة م ا أ ا

جملة ميالف للبحوث والدراسات ISSN : اجمللد 4 العدد / 1 الشهر والسنة Mila Univ center. Publish. Co.. The impact of electronic management to bu

قسم تكنولوجيا الحاسوب والمهن الصناعية

الشريحة 1

ص 70 First Quarter Assessment February 2018 Sunday, 11 February 2018 Grade 7B Day/Date Subject Period Objective Sunday 18/2/2018 تربية اسالمية P1 درس

المحاضرة 4 كلي ة الهندسة السنة الثالثة الفصل األول الدكتور: مروان قعقع ميكانيك التربة 1 21/10/2013 تصنيف الرتبة ووصفها: 1.تض ف ايرتب ١ حظب حج احلب بات

Certified Facility Management Professional WHO SHOULD ATTEND? As a Certified Facility Management Professional course, Muhtarif is the ideal next step

الشهادات عدد RAK Chamber of Commerce & Industry Studies & Information Directorate غرفة تجارة وصناعة رأس الخيمة إدارة الذراسات والمعلومات / 5 مليار دره

Oligopoly

عرض تقديمي في PowerPoint

kh 13/ 6 / 2019 الصف والشعبة 5 الثاني ( أ ) لألسبوع من الخطة االسبوعية 9 / 6 / 2019 إلى English ان ادج انتشت ح اإلعالي ح انهغح انؼشت ح To ask and answ

English 1-Identify games in the park. 2-To form sentences with prepositions. (on- in under) Reading page 40 Family and Friends Class Book Practice rea

ص بئ ا وطت RC : لظ ث بػبص )ا اء Le condensateur ا ضق:.I 1 - طق ا ضق: ز ا ضق عطؾ ك ض ط غ ب ج ع عش ي ا سم...( ؿب جب ب ػ ى أؽذ االش ب ا زب خ: ا خط ؽ ا خ

GCAA FELLOWSHIP TRAINING PLAN 2019 EK-UAE-GCAA/SIAS/EXAC/EK/2019 Page 1 of 22

ن خطبة الجمعة المذاعة والموزعة بتاريخ 15 من شوال 1439 ه الموافق 2018/6/29 م م ن ال م ن اه ي الل ف ظ ي ة ن ا م ن س ي ئ ات أ ع م ال ن ش ر ور أ ن ف سن ا

MEI ARABIC 103 SYLLABUS Middle East Institute Arabic 103 Beginners III Syllabus Instructor Name: Phone: MEI Phone: (202) MEI l

Department of Computer Information Systems

التاريخ: 19/6/2008

التصمیم والبرمجة غرضیة التوجھ الدكتورساميخیمي ISSN: X Books & Refrences

Application-1st page

حفظ واسترجاع الصور في قاعدة البيانات Sql Server بلغة سي شارب

Study Plan - Early Childhood الخطة الدراسية - طفولة مبكرة 2016 خطة البرنامج األكاديمي بكالوريوس التربية في التعليم االبتدائي تخصص: الطفولة المبك

ش ط TRANQUILITY ش ط Tranquility دومي ي ه منتج سك رائ ص ي ئ ب ت ست ى إق م م ا ر ا و. ا ط ط ا ع ة التصم د م ا ن س ا عم ري وأس ب ء ه ا ا م ا ي سي أجن سكن

Schedule Planner User Guide Target Audience: Students This tool can help you better plan your course schedule by generating a visual representation of

نتيجة بطولة الجمهورية لمرحلة 17 سنة

Microsoft Word - eswae2018-arabic.docx

اختبار تحليل التباين األحادي و اختبار كرودكال والس الالمعلمي يبين السؤال التالي ست مجموعات من دول العالم توضح نسبة التحضر في كل منها حسب الموجود في ال

Babylon University جايعت بابم College of Material Engineering كه ت ذست ان اد ان شدهت //انزا ت ان ادة // انبشيجت بهغت Visual Basic ان ذاضش // دس يذ ذ س

Determinants

النسخ:

ػ ذ ا يبذع ا م ي ك ا غا بم ي ا غك حخغشن ا يذا ؼ اص ا يخ ػ ي خفغ ب و في ا ؼا ا ؼشبي اص غ ف ضذ االعخار ا خ يز ؼا يبذػا وي ي ششا ػ ا سائؼا Mo7amed Reda Abd ElRahman ORACLE FINANCIAL CONSULTANT ACCOUNTANT UNDER ORACLE APPLICATIONS ENVIRONMENT INSTRUCTOR ORACLE FINANCIAL R12 INSTRUCTOR ORACLE DEVELOPER Scientific Computing Center Mansoura University Mobile : 01066734381

Introduction To PL/SQL Index Fundamental (I) Chapter1: Chapter2: Chapter3: Chapter4: Chapter5: Chapter6: Chapter7: Chapter8: Introduction to PL/SQL Declaring PL/SQL Variables Writing Executable Statements Interacting with the Oracle Server Writing Control Structures Working with Composite Data Types Using Explicit Cursors Handling Exceptions PL/SQL Program Units Fundamental (II) Chapter1: Chapter2: Creating Stored Procedure s Creating Stored Functions Chapter3: Creating Package

PL/SQL Fundamental (I)

CHAPTER 1 Introduction to PL/SQL PL/SQL Procedural Language / Structure Query Language PL \ SQL إ زذاد غخ ا SQL ثإضبفخ يضاد غخ ا جش غخ األعشائيخ. ع ا زؼب األسزؼال ا خبطخ ثب SQL يز إدساع ب داخ ا ى د ا خبص ث غخ ا. PL / SQL س ف م ف ا PL ثؼ و د رخضي خ ف ا DATABASE م ثب ذاء ػ ي فمظ إسزذػبئخ. س ف م ثأسزخذا بيس ثب زغيشاد (Variables) ايضب ا ض اثذ (Constant) ا اع اخش وضيشح. س ف سزخذ ا غ ا ششعيخ Statement) (If ع ا زىشاس (Loop) رسزخذ زىشاس ع ؼي ػذد شاد ؼي. س ف م ثىزبثخ ا ى د شح اؽذح ى ب سزغيغ ر فيزح اوضش شح. ي ى األسزفبدح ب ثي اد اد : PL / SQL يضاث ا Modularized ح يش ا بش ا ش : (Nested Blocks) ؽيش سزغيغ ضغ اوضش ث ن داخ ثؼض ب (Libraries) األسزفبدح ا خجشاد األو اد ا سبثمخ ر ه ثغ ؼ ب ف شى ىزجبد ا ساو ا خز فخ. Integration ا خىا :. Jdeveloper يزىب غ زغبد ا ساو ض ا Portability ا ش ت :. (Platform) ا (Operating System) ؽيش سزغيغ وزبثخ ا ى د ػ ا Exception ؼا ضت األخاء : ؽيش سزغيغ ؼب غخ األخغبء إظ بس ب ثب شى ا ز شيذ.

PL/SQL Block Structure ػذة (Blocks) و (Block) يخى : PL يخى و د ا Optional مت ا خؼشيف األػال حغخ ػ اي : Variables Cursors Constants And Other Types Mandatory ا مت ا خ فيزيت SQLStatement Pl / SQL Statement Optional ؼا ضت األخاء Mandatory ايت ا Block غ ظ :. End Begin يزى ا Block ػ األل

: PL / SQL ح فيز ص ػباساث ا. PL / SQL يز ضغ ػال خ (;) فبط خ م عخ ف بيخ و ع ا ػجبسح ع ا ػ ذ ر فيز ا ج ن ثذ أخغبء رظ ش ا غ خ ا زب يخ ز ضيؼ ر ب طؾخ ا ز فيز PL / SQL procedure successfully completed. Exception ا Begin ا Declare الؽظ ػذ ع د ػال خ ا فبط خ ا م عخ ثؼذ بيخ و خ. End الؽظ ع د ػال خ ا فبط خ ا م عخ (;) ف بيخ و خ ي ى وزبثخ أوضش ع خ ا ػجبسح ػ فس ا سغش ا فظ ثي ثؼال خ ا فبط خ ا م عخ (;) ى اليؾجز ر ه غؼ لشاءح ا جش ب ظ اس وز ه ا زؼذي في : ا اع ا ب واث Block Types العظ ا ا اع ا Blocks ف غت ا PL / SQL ي ى ا حى فظ ت و يا ا خذاخ غ بؼؼ ا ا بؼغ Blocks) (Nested ح مغ ز ا ىخ ا لغ ي : Blocks Anonymous block Subprograms block" "Anonymous الكتلة المجهىلة : يس اس يز رؼشيف ػ ذ مغخ ا زغجيك ي فز سبػز ب يز اسسب ا ؼب ظ ا ساو زشع ز ب ر فيز ب. "Subprograms" وحدات برمجية : ؽذاد ا Blocks رمج ؼب الد (Parameters) ي ى ا رسز ذ ػ ي ب ف ر فيز ا جش ب ظ ر مس ز ا ؽذاد ا ( Procedure ) (Function) ز ا ؽذاد يز ؽفظ ب داخ ا Database يز اسزذػبئ ب ػ ذ ا ؾبعخ ا ي ب. )1 )2

Blocks Types Anonymous Procedure Function Differences between Anonymous Blocks and Subprograms Anonymous Block Subprogram ئع م بؼ Compile شة اعذة فمؾ يخض ف ا Database غخيغ ح فيز App أخش ى ا يأخز Parameters يظ ئع م بؼ Compile ػ ذ و ػ يت ح فيز اليخض ف ا Database ال غخيغ ح فيز App اخش الي ى ا يأخز Parameters ا ا فشق بي ا Procedure ا Function ا Procedure ى رؼ د ثمي خ ا اوضش ا ال رؼ د ثمي خ. ا Function الثذ أ رؼ د ثمي خ.

Declare V_fname varchar2 (20); Begin Select First_name into V_fname From employees Where employee_id = 100 ; End ; زاي : اعخخشس اع ا ظف سل 111 PL/SQL procedure successfully completed. ملحىظة : Set Serveroutput On ز ا ض ت حىخب شة Procedure PUT_LINE البذ هي تهيئة البز بهح ألستخزاج خول الطببعه عي طزيق كتببة األهز التبلى DBMS_OUTPUT.PUT_ LINE اعذة ف ا Session حظ غف ظت عخ م باغالق ا بش ا ش. وال هى (,). واحذ لذلك ال ستطيع استخذام ال بعذ تهيئة البز بهح قىم بكتببة خولة الطببعه وهى DBMS_OUTPUT تسوى Package Parameter Begin هحفىظة داخل وتأخذ بذاخلهب بل ستخذم ( ) فى حبلة PL/SQL procedure successfully completed. تىضع خولة الطببعه داخل لى ارد ب طببعة اكثز هي هتغيز. فى حبلة كتببة الكىد بشكل سلين وبذوى أخطبء تظهز الدولة التبلية : Declare V_fname varchar2 (20); Begin Select First_name into V_fname From employees Where employee_id = 100 ; DBMS_OUTPUT.PUT_LINE( the first name of the employee is : V_fname ) ; End ; the first name of the employee is : Steven PL/SQL procedure successfully completed.

CHAPTER 2 Declaring PL/SQL Variables ا خغيشاث Variables ىا ف ا ي س م في بخخضي بيا ؼي ا لي ؼي حخضي إلج غخيغ ئعخخذا ا : ا Variable Variables خؼذي األػافت ػ ا مي ا ص دة ف ا Database ايؼا غخيغ ئ عخخذا اوزش شة. ا م اػذ ا ؼا خغ يت ا : Variables البذ أ يبذأ بغشف ا ى ا يغخ ع ػ عش ف أسلا ػال اث يضب اال يضيذ ػ 31 عشف اال يى و ت و اث ا ساو ا غض صة ز Insert) (Select, ا غيش ا غ ظت :. (Declare) ا ا ضضء ا خاص ب Declarative Section ف Varables م بخؼشيف ا ا ى ئػاء ا Variables لي ئفخشاػيت ف ا Declare غخيغ حبذي ا ف ا Executable Section ا ضضء ا خاص ب. Begin Example Variable Name Datatype ; V_hire Date; يضب ا ال يغخ ػ V_deptno Number Not Null := 10 ; Null V_location Varchar2(13) := 'Mansoura' ; ز ا مي ت رابخت الحخغيش ; 1400 := Number V_comm Constant Example ( I ) V_Name Varchar2(20) ; DBMS_OUTPUT.PUT_LINE ('My name is: ' V_Name ); V_Name := 'Mo7amed Reda'; DBMS_OUTPUT.PUT_LINE('My name is: ' V_Name); END ; ف ز ا غا يبغ ش ء ع و ت : Is My Name فمؾ ف ز ا غا عيبغ و ت My Name Is: Mo7amed Reda

Example ( II ) V_Name Varchar2(20) := 'Mo7amed'; V_Name := ' reda '; DBMS_OUTPUT.PUT_LINE('My name is: ' V_Name); END ; ف ز ا غا ت ا Variable ب ا لي ف ا Declarative Section ب ا لي ت أيؼا ف ا Executable Section ى ػ ذ ا م بباػت ا مي ا ص دة با خغيش عخبغ ا مي ت ا ص دة ا Executable Section أل ا األعك ف ا خ فيز ز ه عيى احش ا باػ. My name is : reda أ اع ا خغيشاث Types of Variables PL/SQL variables: Scalar Composite Reference. ا فشدة (CH6). ا شوبت. ا شاس ب ا. راث األعضا ا ىبيشة (LOB) Large object NonPL/SQL variables: Host Bind : PL / SQL ا ال ا خغيشاث ا خاطت با غ ظت : باع يذي ػ ا بيا ا ز يغ ت. األفؼ حغ يت ا Variable. Column ػ ئع Variable األفؼ ػذ حغ يت ا. Declarative Section البذ ئػائت لي ئفخشاػيت ف ا Not Null ا Constant ا ز يى Variable ا ا وخابت و ت غخيغ ئػاء ا Variable لي ت ئفخشاػيت ػ ؿشيك ػ (=:) Operator Assignment Default و ا ي : V_Name Varchar2(20) := 'Mo7amed Reda' ; V_Name Varchar2(20) Default 'Mo7amed Reda' ;

األفؼ حؼشيف و Variable ػ عش عخ يغ ػ ي ا ػ يت ا مشاءة أيؼا ؼا ضت األخاء ع ت ا ط ي ا ي ا. ع ف خ ا ي ف زا ا Chapter ا ع األ ي ا Scalar ا PL/SQL Variables ع ف خ ا ي ا ع األخيش ا خاص با. Non Pl/sql Varciables Declaring Scalar Variables ا خغيشاث ا فشدة Variables) (Scalar : )1 خغيشاث حغخ ػ لي فشدة الي ى حضضء ا لي فشدة أطغش ا ف ا اع الي ى ا يغخ ا خغيش في ا ع ػ لي ت اعذ فمؾ Number ا Varchar2 ا Date ا Boolean غيش. V_Job Varchar2 (9) ; V_Count Binary_Integer := 0; V_Dept Number (9, 2) := 0; V_Orderdate Date := Sysdate+ 7; V_Tax_Rate Constant Number := 8.25; V_Valid Boolean Not Null := TRUE; األ اع ا خخ فت : Data Types : خغيش عشف رابج ا غؼت ع اء ح أل ا با بيا اث ا حشوج فاسغت زا ا ع ؼش ف Char (length) ا غاعت ى اعشع ف ا خؼا. (length) : Varchar2 خغيش عشف راث عؼ ؼي ت ى ز ا غؼت خغيشة يخ أل ا خغيش بغؼت ا ض فمؾ بغذ الظ عؼت زا ا خغيش ف زال خغيش عشف راث عؼت 31 عشف ي ػغ في ع 6 عش ف ي الء با غش ف اي 6 يخ ح فيش ا بال زا ا ع فيذ ف ا غاعت ى اب ء ا ع ا غابك (char). : Long ا ع األعاع بيا اث ا ظيت راث عؼ بغذ الظ 32761 بايج..PL/SQL ى اليخ ا خؼا ب ال يف Long ز ا : Long Raw (s : number,p) خغيش سل يأخز اق خا اعذة ا 33 خا ت وز ه وغش ػشش 23 ا 127 : p ػذد خا اث األسلا ا ظغيغت. : S ػذد خا اث األسلا ا ؼششيت. : ا ع ا شل ا ظغيظ يأخز وغ س ػششيت خالي + 2147433 Binary_integer : Pls_integer ز ا ع ا غابك ى اعشع يأخز غاعت ال. : Boolean ع يأخز رالد لي فمؾ null) (true, false m يغخخذ ف عاالث ا شش ؽ ا ماس اث ا ميت. فمؾ : Date ع ا خغيشاث ا خاسيخيت يغخ ػ بيا اث حاسيخ ا لج ا ص يبذأ 4712 لب ا يالد ا 9999 بؼذ ا يالد.

Declare خغيش عشف راث عؼت 15 عشف ;(15) varchar2 v_job خغيش سل طغيظ يأخز لي ت ئبخذائيت طفش ;0 =: binaryinteger v_count خغيش سل عبغ خا اث ار ا وغش ػشش ;3.17 =: (7.2) number v_total_sal خغيش ص يبذأ ف األعب ع ا ماد ; 7+ sysdate v_order_date date:= CTAXRATIO CONSTANT NUMBER (4.2) :=17.25; 17.25 V_Flag Boolean Not Null :=True ; خغيش رابج سل ى اسبغ خا اث خا احا وغش ػشش يأخز لي ت افخشاػيت. خغيش م Boolean اليأخز لي ت فاسغت Null يأخز لي ت ئفخشاػيت true %TYPE Attribute. Column ا خاص با Length ا Data type ى ا يضة ب ا ا ا حأخز فظ ا Data type Variable Name Table Name. Column Name %Type ; V_Name Employees.Last_Name%Type ; V_Balance Number(7,2) ; V_Min_Bal V_Balance%TYPE := 1000; غ ظت : زا ا ع افؼ ا Basic Scalar عيذ ا ػ ذ ػ ا حغييش ا حؼذي ف ا ضذ ي ف ا Length زال فا ا Variable يخغيش ح مائيا بخغييش ا ضذ ي.. (true, false, null ) Boolean ا مي ا خ حؼ د ب ا ئعخخشاس ئع شحب ا ظف ا ز يغ سل 111 V_Name Employees.Last_Name%Type ; V_Sal Number ; V_Id Employees.Employee_id%Type := 100 ; Select Last_Name, Salary into V_Name, V_Sal From Employees Where Employee_Id = V_Id ; DBMS_OUTPUT.PUT_LINE( V_Name ' and His Salary is : ' V_Sal); END ;

Bind Variables زا ا ع ا خغيشاث يخ ئ شاؤة داخ ا Session يظ داخ ا Block حغ. Host Variable Variable Variable Name. ي ػغ لب ا و ت Variable حغخخذ أيؼا ف ا Sql ا Pl/Sql غ ظت : ػ ذ وخابت Bind Variable الي ػغ بؼذة (;) Colon Semi يى شى ت وا خا : Datatype ػ ذ ا ذاء ػ يت ئعخذػائت البذ ا ؼغ لب ) : ( Colon غخيغ ئعخخذا ص ت ا باػ ا ؼاديت غ ا. Bind Variable و ا ي :Variable Name Variable V_Sal Number Select Salary into :V_Sal From Employees Where Employee_Id = 178 ; END ; / Print V_Sal ئعخخشاس شحب ا ظف سل 173 ي ى اعخخذا ا Bind Variable ف ا. SQL ا Bind Variable ا غ V_Sal ا زو س ف ا زاي ا غابك يغخ ػ شحب ا ظف سل 173 فخشع ا ا شيذ األعخؼال ػ ا ظفي ا زي يغظ ػ زا ا شحب غ ظت : زاي : Select Last_Name From Employees Where Salary = :V_Sal ; حغخخذ ف ا باػت اح احيىيا حغ. Set Autoprint On Bind Variable ان ص ت الحؼ اال غ ا

زاي : Prompt for Substitution Variables ل باعخخشاس شحب ا ظف ا ز عأػيه سل ت ايا وا غخخذ ا ا Bind Variable شحب Set Veriffy Off Variable V_Sal Number Accept Empno Prompt ' Please Enter a Valid Employee ID ' Set Autoprint On V_Id Number(6) := & Empno ; Select Salary into :V_Sal From Employees Where Employee_Id = V_Id ; END ;

CHAPTER 3 Writing Executable Statements Lexical Units in a PL/SQL Block. ػ ذ ا خؼا غ األعشف ا خ اسيخ البذ ػؼ ا بي Single Quotition.*/ غخيغ وخابت ا ى د ػ اوزش عش. غخيغ ػ Comment ( حؼ يك ) ى د بشيمخي و ا ي :. غش اعذ غخخذ ألوزش عش غخخذ */ مف ب ؼ Comment ؼ Comment )1 )2 األفؼ ا م بىخابت ا comment يغخيغ ا يف األو اد بشى عشيغ. ػ األو اد ششط ظيفت و و د عخ ارا صاء بش ش اخش يى ا شش ع SQL Functions in PL/SQL V_Lname Varchar2(20) := Initcap( ' KING' ) ; V_Name Varchar2(20) ; Select First_Name into V_Name From Employees Where Last_Name Like V_Lname And Salary = 24000 ; غ ظت : PL داخ ا SQL ا ص دة با Functions غخيغ اعخخذا ص يغ ا. اػذا ا Decode & Group Functions

Nested Blocks غ ظت : ا ب ن ا ذاخ يش ا ب ن ا خاسص يإرش في ا ؼىظ غيش طغيظ ا ا ا ب ن ا خاسص اليش ا ب ن ا ذاخ. Example V_Father_Name Varchar2(20) := 'reda'; V_Date_of_Birth Date :='04Apr1965' ; V_Child_Name Varchar2(20) := 'mohamed' ; V_Date_of_Birth Date := '04Dec1985'; DBMS_OUTPUT.PUT_LINE( V_Father_Name ) ; ==== >>> reda DBMS_OUTPUT.PUT_LINE( V_Date_of_Birth ); ==== >>> 04Dec1985 DBMS_OUTPUT.PUT_LINE( V_Child_Name ); ==== >>> mohamed DBMS_OUTPUT.PUT_LINE( V_Date_of_Birth ); ==== >>> 04Apr1965

غ ظت : غخيغ ػ Qualifier ب ن حغ يخ بأ ئع شيذة عخ خ ى حغذيذ ا ب ن ا شاد ا ذاء ػ ي ى البذ. ػؼ بي << >> ان خغيش ف ا ب ن ا ىبيش فظ األع ف ا ب ن ا ظغيش ل ا با ذاء ػ ي داخ ا ب ن ا ظغيش فاأل يت خغيش ا ص د ف ا ب ن ا ظغيش. Logical Arithmetic Concatenation Parentheses to control order of operations Operators in PL/SQL Same in SQL Qualify an Identifier Example ( I ) << scc >> V_Father_Name Varchar2(20) := 'reda'; V_Date_of_Birth Date :='04Apr1965' ; V_Child_Name Varchar2(20) := 'mohamed' ; V_Date_of_Birth Date := '04Dec1985'; DBMS_OUTPUT.PUT_LINE( V_Father_Name ) ; ==== >>> reda DBMS_OUTPUT.PUT_LINE(scc. V_Date_of_Birth ); ==== >>> DBMS_OUTPUT.PUT_LINE( V_Child_Name ); ==== >>> Mohamed DBMS_OUTPUT.PUT_LINE( V_Date_of_Birth ); ==== >>> 04Apr1965 04Dec1985

Example ( II ) << scc >> V_Sal Number(7,2) := 60000 ; V_Comm Number(7,2) := V_Sal * 0.20; V_Message Varchar2(255) := ' eligible for commission' ; V_Sal Number(7,2) := 50000 ; V_Comm Number(7,2) := 0 ; V_Total Number(7,2) := V_Sal + V_Comm ; V_Message := 'CLERK not' V_Message ; DBMS_OUTPUT.PUT_LINE ( V_Message ); (1) scc.v_comm := V_Sal * 0.30; DBMS_OUTPUT.PUT_LINE (scc.v_comm ); (2) V_Message := 'SALESMAN' v_message; DBMS_OUTPUT.PUT_LINE ( V_Message ); (3) 1) eligible for commission. 2) 15000 3) SALESMAN eligible for commission.

CHAPTER 4 Interacting with the Oracle Server Using PL/SQL to Manipulate Data INSERT UPDATE DELETE MERGE INSERT into Departments Values (280, 'Reda_Dept', 100, 1700); Inserting Data ***************************************** Updating Data Sal_Increase Employees. Salary%Type := 800 ; UPDATE Employees Set Salary = Salary + Sal_Increase Where Job_id = 'ST_CLERK'; ***************************************** Deleting Data Deptno Employees.Department_id%Type: = 280; DELETE From Employees Where Department_id = Deptno;

SQL Cursor IMPLICIT EXPLICIT ا بش ش ا ز يم بؼ ع ف خ ا ت با خفظي ف (7) Chapter ا ع ا ؼ ا ا ا ساو ا خ لا ج بؼ يؼ ح مائيا ب ضشد ا ذاء ػ ي ا Cursor يؼزجش سبؽخ ف ا شا رم ا ساو ثزغ يض ب ار بريىيب غ و ع خ SQL رضغ ث ب ا جيب بد ا مبد خ ا SQL Cursor Attributes for Implicit Cursors. SQL غ ظت : SQL%FOUND SQL%NOTFOUND SQL%ROWCOUNT عذ ثيب بد يم ثإسزشعبع True يغذ يم ثإسزشعبع False يغذ ثيب بد يم ثإسزشعبع True عذ ثيب بد يم ثإسزشعبع False يم ثإسزشعبع ػذد ا ظف ف ا ز رأصشد ثب ؼ يخ ف ا ي س ل ب غظ ا ظف سل 206 ر اؿبغ ػذد ا ظف ف ا خ حأرشث با ؼ يت ا صذ زا ا ظف V_Rows_Deleted Varchar2(30) ; V_Empno Employees.Employee_id%Type := 206; Delete From Employees Where Employee_id = V_Empno ; V_Rows_Deleted := (SQL%Rowcount ' row deleted.'); DBMS_OUTPUT.PUT_LINE (V_Rows_Deleted );

ل باػاء ا ظف سل 111 ا صذ ا شحب األح 31111 V_Name Varchar2 (20); Select Last_Name into V_Name From Employees Where Employee_Id = 100; IF SQL%Found Then Update Employees Set Salary = 30000 Where Employee_Id = 100; End IF; غ ظت : مذ ل ب ثؼ ع خ Select ؽز ؼشف ي عذ ظف ث زا ا شل ا ال ف عذ سيأر ثإس ا يغذ ف يأر ثش ء. ا ب ا SQL%FOUND فز ظش ا ا SQL عذد ثيب بد ا ال فإ عذد فس ف رم ثز فيز ػ يخ ا زؼذي ا رغذ ف رفؼ ش ء.

CHAPTER 5 Writing Control Structures IF Statement V_Myage Number:=30; IF V_Myage < 11 Then DBMS_OUTPUT.PUT_LINE (' I am a child '); ELSE DBMS_OUTPUT.PUT_LINE (' I am not a child '); End IF;

Example V_Myage Number:=30; IF V_Myage < 11 Then DBMS_OUTPUT.PUT_LINE (' I am a child '); ELSIF V_Myage < 20 Then DBMS_OUTPUT.PUT_LINE (' I am young '); ELSIF V_Myage < 30 Then DBMS_OUTPUT.PUT_LINE (' I am in my twenties'); ELSIF V_Myage < 40 Then DBMS_OUTPUT.PUT_LINE (' I am in my thirties'); ELSE DBMS_OUTPUT.PUT_LINE (' I am always young '); End IF; غ ظت : 1( رؾمك ا ششط األ ي يز ر فيز األ ش ا ز ثؼذ Then ارا يزؾمك ا ششط األ ي يز ا غ ء ا ا ششط ا ضب ار رؾمك يز ر فيز األ ش ا ز ثؼذ then إرا وب ذ ا شش ط و ب null يز ر فيز األ ش ا ز ثؼذ. Else IF Condition Then Action س ف ي فز ا Action True ي فز ا Action False سبش ضغ ) ; ( ف بيخ. IF سزغيغ ضغ اوضش If ف فس ا غ خ. و خ Else رأر شح اؽذح ف بيخ ع خ. IF ف بيخ ا شش ط ضغ و خ ; if End )2 )3 )4

CASE Expressions V_Grade Char(1) := Upper('&Grade'); Appraisal Varchar2 (20); Appraisal := CASE When V_Grade = 'A' Then 'Excellent' When V_Grade In ('B','C') Then 'Good' Else 'No such grade' End; DBMS_OUTPUT.PUT_LINE ('Grade: ' V_Grade ' Appraisal ' Appraisal); Handling Nulls.. ا مبس بد ا جسيغخ في ب Null ا برظ يظجؼ Null. ضؼ ب Not غ Null ا برظ يظجؼ Null غ And األل ا False األضؼف ا True غ Or األل ا True األضؼف ا. False غ ظت :

LOOP Statements Basic Loop While Loop For Loop Basic Loop Syntax Loop Statement; Exit [When Condition]; End Loop; الغ باعخخذا ا Basic Loop V_Country_id Locations.Country_id%Type:= 'CA'; V_Loc_id Locations.Location_id%Type; V_Counter Number := 1; V_New_City Locations.City%Type := 'Montreal'; Select Max(Location_id) Into V_Loc_id From Locations Where Country_id = V_Country_id; LOOP Insert Into Locations (Location_id, City, Country_id) Values ((V_Loc_id + V_Counter), V_New_City, V_Country_id); V_Counter := V_Counter + 1; EXIT WHEN V_Counter > 3; END LOOP; ل باػافت 3

سزظ ا Loop رؼ ا بال بيخ ثب غجغ ال ػ شب وذ زالل ػشفذ زغيش ث ضبثخ ػذاد ا ز ي ض ػذد ا ذ ساد ا ز رم ث ب ا Loop ف و د سح ضيف اؽذ ػ زا ا ؼذاد ؽز يظ ا ا ؾذ ا غ ة يخشط ارا فب Basic Loop الثذ ػ زغيش يى ث ضبثخ ػذاد ؽز ػ يخ ا Loop ػ ذ. ارا ؾذد Exit When Condition ششط خش ط ا Loop فس ف رظ ا Loop رؼ ا بال بيخ س ف Numeric or Value Error :Number ==>.Error رز لف ا Database ػ ا ؼ ثسجت ا ز يظ يظ ش زا ا Precision too Large غ ظت : فشض ب ا ب ل ب ثؼ ا ششط ا زب 1> Counter Exit When فب ا Basic Loop س ف ر فز شح اؽذح ػ األل سغ ا ا ششط يخب ف ا Loop ر ه أل ا Statement ر فز ا ال لج ا ش س ػ ا. Condition While Loop Syntax While Condition Loop Statement; End Loop; V_Country_id V_Loc_id Locations.Country_id%Type:= 'CA'; Locations.Location_id%Type; ل باػافت 3 الغ باعخخذا ا WHILE Loop V_Counter Number := 1; V_New_City Locations.City%Type := 'Montreal'; Select Max(Location_id) Into V_Loc_id From Locations Where Country_id = V_Country_id; WHILE v_counter <= 3 LOOP Insert Into Locations (Location_id, City, Country_id) Values ((V_Loc_id + V_Counter), V_New_City, V_Country_id); V_Counter := V_Counter + 1; END LOOP;

ا While Loop رم ثؼ Check ا ال ػ ا Condition لج ر فيز ا Statement فإرا رؾمك رم ثؼ ا Loop ارا يزؾمك رؼ ا Loop ثؼىس ا Basic Loop و ب رؾمك ا Condition س ف رظ ا Loop رؼ. غ ظت : For Loop Syntax For Counter in [Reverse] lowerbound.. UpperBound Loop Statement; End Loop; ا For Loop الرؾزبط ا ػ ػذاد ب ث رم ا ساو ثؼ ار بريىيب ى ب م ثزس يز فمظ. ف ضال اسد ب عجبػخ األسلب... 1 11 فب ب م ثىزبثخ ا غ خ ث زا ا شى For I in 1.. 10 Loop DBMS_OUTPUT.PUT_LINE ( I ); اسد ب عجبػخ األسلب ثشى ػىس ا شل 11 ؽز ا شل 1 فب م وزبثخ ا غ خ ثب شى ا زب : 10.. 1 For I in Reverse Loop DBMS_OUTPUT.PUT_LINE (I); ال سزغيغ اسزخذا Null ف ثذايخ ا ؼذاد ال لي يغت ا جذأ ث ب (1). سزغيغ اسزخذا اوضش Loop داخ ثؼض ب ف فس ا غ خ. غ ظت : الغ باعخخذا While Loop V_Country_id Locations.Country_id%Type:= 'CA'; V_Loc_id Locations.Location_id%Type; V_New_City Locations.City%Type := 'Montreal'; Select Max(Location_id) Into V_Loc_id From Locations Where Country_id = V_Country_id; FOR i in 1..3 LOOP Insert Into Locations (Location_id, City, Country_id) Values ((V_Loc_id + i), V_New_City, V_Country_id); END LOOP; ل باػافت 3

CHAPTER 6 Working with Composite Data Types Composite Data Types 1) PL/SQL Records 2) PL/SQL Collections : a. Index By tables. b. Nested table. c. Varray. ان ػا ا : PL/SQL Records Records غ ظت : ا Record يؾ ثذاخ اوضش لي خ ػ ػىس ا. Scalar يؾز ا Record ػ 3 Generation Language (3GL) Fields يز ا شبء ز ا خب بد ث فس ا غشيمخ ا ز رسزخذ ب غبد ا C ا ++C إػغبء ا Record رس يز ب ايضب ص ػ ا Variable ا جش ظ يم ثزؼشيف ا DataType ا خبطخ ث ز ا Fields ا زغيش الثذ رؾذيذ ع ثيب بد ا ا ا Variable الثذ رؾذيذ Datatype ى األخزالف ز ا شح ا ا Datatype ػجبسح ػ غ ػخ ا Datatypes يسذ اؽذح ز ه يغت ػ ي ب ا شبء ا Datatype ا ال ثؼذ ر ه يز إػغبؤ ب زغيش. Syntax Create Datatype and Variable. Type Type_Name is Record (Field1 Datatype, Field2 Datatype,.) ; Variable ;

غ ظت : Two Fields ش ا ب لذ ل ب ثؼ Datatype رؾز ػ وأ ب ل ب ثؼ زغيشا داخ ا Datatype ز لذ ل ب ثإػغبء ز ا Datatype إس ب. ئعخخشس ئع ظيفت ا ظف سل 111 باعخخذا ا Record Type Emp_Rec is Record (R_Name Varchar2(20), R_Job Varchar2(20)); V_Rec Emp_Rec ; Select Last_Name, Job_id into V_Rec From Employees Where Employee_id = 100 ; DBMS_OUTPUT.PUT_LINE (V_Rec.R_Name ' ' V_Rec.R_Job ) ; غ ظت :. (Variable.Field name) ف ؽب خ ا غجبػ الثذ وزبث اس ا زغيش د د اس ا في ذ. Record ػ ذ األسزؼال ضغ ا مي داخ ا زغيش يغت ا يشاػ ا زشريت ا ع د ف ا

%ROWTYPE Attribute Syntax Variable_Name Table_Name%Rowtype ; سزخذ ا %Rowtype اسد ب اسزخشاط ع يغ أػ ذح ا غذ ي ف اسزخذ ب ا غشيمخ ا ؼبديخ ا Scalar فإ ب س ؾزبط ا رؼشيف زغيشاد ثؼذد أػ ذح ا غذ ي ل ب ثؼ Record فإ ب س ف ؾزبط ا رؼشيف Fields ثؼذد أػ ذح ا غذ ي أيضب زا سجت إسزخذا خبطيخ %Rowtype. Exampl (I) ئعخخشس ص يغ بيا اث ا ظف سل 111 ل بباػت ئع ت شحبت V_Rec Employees%Rowtype ; Select * into V_Rec From Employees Where Employee_Id = 100 ; DBMS_OUTPUT.PUT_LINE ( V_Rec.Last_Name ' ' V_Rec.Salary); Exampl (II) Type T_Rec is Record (R_Sal Number, R_Minsal Number Default 1000, R_Hire_Date Employees.Hire_Date%Type, R_Rec1 Employees%Rowtype ); V_Myrec T_Rec ; V_Myrec.R_Sal := V_Myrec.R_Minsal + 500; V_Myrec.R_Hire_Date := Sysdate; Select * into V_Myrec.R_Rec1 From Employees Where Employee_Id = 100; DBMS_OUTPUT.PUT_LINE (V_Myrec.R_rec1.Last_Name ' ' To_Char(V_Myrec.R_Hire_Date) ' ' To_Char(V_Myrec.R_Sal) );

PL/SQL collections INDEX BY Tables ع أ اع ا Datatype ا ز م ثؼ ب يزى ػ دي ا ؼ د األ ي ثيى Primary Key يفض ا رى ع ا جيب بد ث سل يخ ا ؼ د ا ضب ا ب ا يى Scalar ا. Composite Syntax TYPE Type_Name Is Table Of ( Column_type Table.Column%Type Table%Rowtype ) INDEX BY (Datatype ); Variable_Name Type_Name; غ ظت :

Examples(I) Type T_Name_Table Is Table Of Employees.Last_name%Type Index By Number; V_Name T_Name_Table; V_Name (1) := 'Mo7amed Reda'; IF V_Name.Exists(1) Then Insert into Employees (LAST_Name, Employee_Id, Hire_Date, Job_Id, Email ) Values(V_Name(1), 800, '1JAN2010', SA_REP, Dev_Habib@Yahoo.com ); Examples(II) TYPE Emp_Table_Type Is Table Of Employees%Rowtype INDEX BY PLS_INTEGER; V_Emp Emp_Table_Type; V_Max_Count Number := 104; FOR i IN 100.. V_Max_Count LOOP Select * Into V_Emp(i) From Employees Where Employee_Id = i; END LOOP; FOR i IN V_Emp.FIRST.. V_Emp.LAST LOOP DBMS_OUTPUT.PUT_LINE ( V_Emp(i).Last_Name); END LOOP;

CHAPTER 7 Using Explicit Cursors ا ا Cursor ا فائذحت ا Explicit Cursors يس ا ع ا ض ا ا ا جش ظ ا ز يم ثؼ فزؾ رؼجئز غ م ػجبسح ػ ىب ف ا ي س رم في ثؼ ػ ي ؼي ا ا ب م ثزخضي و ا جيب بد ا ز ؾزبؽ ب ا Database ف ا Cursor ثذال ا ز ت ف و شح ا ا Database سزذػ ا جيب بد زا عجؼب اسشع ثىضيش ي فش لزب وجيشا ارا فبئذر ا ىجش ف ا سشػخ ف األسزؼال ؼ ا جيب بد فجذال ا ضغ ا مي ا Database ف ا زغيش ف أر ثى ا جيب بد ا ز شيذ ب شح اؽذ ا Cursor ا ز ثغجيؼز خض ف ا ي س ص م ب ا ا زغيش. Syntax Cursor Cursor_Name is Select_Statement; Open Cursor_Name ; Fetch Cursor_Name Into Variables ; Close Cursor_Name ;

ئعخخشس أسلا أع اء ظف األداسة سل 31 Cursor Emp_Cursor is Select Employee_Id, Last_Name From Employees Department_Id = 30 ; V_Id Employees.Employee_Id%Type ; V_Name Employees.Last_Name%Type ; Open Emp_Cursor ; LOOP Fetch Emp_Cursor into V_Id, V_Name ; Exit When Emp_Cursor %Notfound ; DBMS_OUTPUT.PUT_LINE ( V_Id ' and his name is :' V_Name ); End Loop ; Close Emp_Cursor ; ل بغ ا زاي ا غابك ى باعخخذا خغيشاث ا ع Composite با خغذيذ باعخخذا ا Record بذال Cursor Emp_Cursor is Select Employee_Id, Last_Name From Employees Where Department_Id = 30 ; V_Rec Emp_Cursor %Rowtype ; Open Emp_Cursor ; LOOP Fetch Emp_Cursor into V_Rec; Exit When Emp_Cursor %Notfound ; ا خغيشاث ا Scalar DBMS_OUTPUT.PUT_LINE ( V_Rec.Employee_Id V_Rec.Last_Name ); End Loop ; Close Emp_Cursor ;

مذ ل ب ثؼ ا Cursor ضؼ ب ث و ا جيب بد ا ز شيذ ب ا Database ص ل ب ثإسزذػبئ ب ا Cursor ا ا زغيش ثسشػ أل األص ب ف ا ي س س اء ا Variable ا ا. Cursor غ ظ : Explicit Cursor Attributes Cursor FOR Loops اسزخذا For Loop غ ا Cursor األشيبء ا شبئؼخ األسزخذا ؽيش ا ب ال ؾزبط ا رؼشيف زغيش ثب سجخ For Loop أيضب ال ؾزبط فزؼ ال زؼجئخ ال غ ك ا Cursor ارا ف ؾزبط اال ؼ ا Cursor فمظ رم ا ساو ا ر بريىيب ثفزؾخ رؼجئز غ مخ. اعخخشس اسلا اع اء ظف األداسة سل 31 باعخخذا ا For Loop Cursor Emp_Cursor is Select Employee_Id, Last_Name From Employees Where Department_Id = 30 ; For Rec in Emp_Cursor Loop DBMS_OUTPUT.PUT_LINE ( Rec.Employee_Id Rec.Last_Name ); End Loop ;

Syntax %ISOPEN Attribute IF NOT c_emp_cursor%isopen THEN OPEN c_emp_cursor; END IF; LOOP... ECLARE END ; زاي ػ اعخخذا ا خاطيت %ROWCOUNT %NOTFOUND. Cursor C_Emp Is Select Employee_Id, last_name From Employees; V_Rec C_Emp%Rowtype; Open C_Emp ; LOOP Fetch C_Emp INTO V_Rec ; Exit When C_Emp %Rowcount > 10 or C_Emp %Notfound; DBMS_OUTPUT.PUT_LINE ( V_Rec.Employee_Id ' ' V_Rec.Last_Name); End Loop; Close C_Emp ; ف ز ا ؾب خ ا ششط يزؾمك ا ال رخشط ا Loop س اء ا Cursor اطجؼ فبسغب ا ػذد ا ظف ف ا ز ر سؾج ب اوجش. 11 غ ظت :

. Cursor FOR Loops Using Subqueries زاي ػ اعخخذا ا For R in ( Select Employee_Id, Last_Name From Employees Where Department_Id =30 ) LOOP DBMS_OUTPUT.PUT_LINE ( R.Employee_Id ' ' R.Last_Name); End Loop; غ ظت : و بفؼ ب ا ب ثذال ػ ا Cursor ضغ ع خ األسزؼال داخ ل ب ثؼ Subquey ىب ا Cursor ف ا for Loop فمظ رم ث فس ا ظيف ى يس ث فس ا سشػخ.. Cursors with Subqueries زاي ػ اعخخذا ا Cursor Sub is Select D.Department_Id, D.Department_Name,E.Staff From Departments D, (Select Department_Id,Count (*) as Staff From Employees Groub by Department_Id) E Where D.Department_Id = E.Department_Id And E.Staff >= 3; غ ظت : برظ زا ا Cursor اسلب اس بء األداساد ا ز ث ب ظفي اوجش ا يسب 3 ظفي.

Cursors with Parameters Parameters زغييش ا ارظ. ا فبئذح ا ب سزغيغ رغييش ا مي ا برغخ ػ ا Cursor ػ عشيك إدخبي Example Cursor C_Emp (P_Id Number) is Select Employee_Id, Last_Name From Employees Where Department_Id = P_Id ; V_Id Number ; V_Name Varchar2(20) ; Open C_Emp( 10 ) ; Loop Fetch C_Emp Into V_Id, V_Name ; Exit When C_Emp%Notfound ; DBMS_OUTPUT.PUT_LINE (V_Id V_Name); End Loop ; Close C_Emp ; DBMS_OUTPUT.PUT_LINE ( ); Open C_Emp( 30 ) ; Loop Fetch C_Emp Into V_Id, V_Name ; Exit When C_Emp%Notfound ; DBMS_OUTPUT.PUT_LINE (V_Id V_Name); End Loop ; Close C_Emp ; ث زا ا شى ى لذ ل ب ثزغييش ا جيب بد اوضش شح ػ عشيك فزؼ ا Cursor شح اخش ثجيب بد اخش ى ر ه يزغ ت ب غ ك ا Cursor ا مذي اال سيظ ش ب Error ا فز ػ ثب فؼ زغ ت ػ ز ا شى خ سزخذ ا خبطيخ. Cursor_Name%Isopen غ ظت :

CHAPTER 8 Handling Exceptions و ب روش ب لج ا ز ا شؽ خ شؽ خ إخزيبسيخ سغزيغ األسزغ بء ػ ب ى ب شؽ خ ب خ في ب يز ا زؼب غ األخغبء ا ز ى ا رظ ش سزخذ ا بئ ؼب غز ب إظ بس ب ثظ س يسزغيغ ف ب لشأر ب ؽيش ا األخغبء ا ز رظ ش ا ساو اليسزغيغ ا سزخذ ا بئ ف ب ز ه ظ ش ب ثظ سح ثسيغخ. Predefined Oracle Server Error 21 زؼبسف ػ ي لج ا ساو ا ش سي يى ذي إس Error ايضب سل ض Example V_Name Varchar2(20); Select First_Name into V_Name From Employees Where Last_Name Like King ; DBMS_OUTPUT.PUT_LINE ( V_Name ); EXCEPTION When Too_Many_Rows Then DBMS_OUTPUT.PUT_LINE ( Query Retrieved Multiple Rows ); Syntax Exception EXCEPTION When Exception1 [Or Exception2] Then Statement ; [When. Then Statement ; ] [When Others بن ؽ ا شسب خ. غ ظت :

فإ س ف يظ ش Error ا بن اوضش شخض ى غ وزبثخ ا عذ اوضش ظف يس King فسزظ ش ا شسب خ ا ز وزج ب ب زا ا Error ا شب يش ا 21 Exception ل ب ثىزبثخ ز ا غ خ Select Last_Name From employees Where salary = 2542184518 ; أل الي عذ ظف يأخز زا ا شرت V_Name Varchar2(20); V_Sal Number; No Data Found ==> Error فإ س ف يظ ش ب زا ا Select Last_Name into V_Name From employees Where salary = 2542184518; DBMS_OUTPUT.PUT_LINE ('V_Name' ); DBMS_OUTPUT.PUT_LINE ( 'V_Sal' ); EXCEPTION When No_Data_Found Then ;(' الي صذ ظف يأخز زرا ا شحب' ( DBMS_OUTPUT.PUT_LINE When Others Then DBMS_OUTPUT.PUT_LINE (SQLCODE '' SQLERRM); ث ز ا ظ سح س ف يظ ش ا الي عذ ظف ث زا ا شرت يم ثغجبػخ ا V_sal ال ا V_name أل ب عبءا ثؼذ ع خ Select ا ز رؾز ػ ا Error ا ب ضؼ ب ع خ ا غجبػ ا شرت األس اػ ا Select فإ س ف رم ثغجبػخ. Null غ ظت : SQLCODE حأح بشل ا Error SQLERRM حأح ب ض سعا ت ا Error

ع ف م األ بؼشع ا Errors ا خؼاسف ػ ي ا ا ش سة و ا ل ا لب ا ا 21 Error خؼا شف ػ ي واألح :

Non predefined Oracle Server ف ز ا ؾب ا Error الي ز ه يخ ا ال ي ز ه اس ذي ثب غجغ سل ذي سسب ى ا شى خ ا ب ال سزغيغ ا ذاء ػ ي أل يس إس ز ه م ثؼ زغيش ا ع Exception ا ا يؾ ثذاخ خ Error ضغ ا Error ثذاخ ػ عشيك بيس ثب Paragma ا ز رشثظ رضغ ا Error داخ ا Variable ب ز يؾذس ارا ؽب ب اضبفخ لي خ Null ف ػ د Not Null ثب غجغ سيظ ش Error سل خ 11411 سسب ز رم ي ا ب ال سزغيغ ضغ لي خ Null داخ ػ د Not Null ى ا سزخذ ا بئ ظ شد ز ا شسب خ زا ا شل يف شيئب ز ه س ف ظ ش سسب يسزغيغ ف ب. Example V_Error Exception; Pragma Exception_init (V_Error, 01400); Insert into Departments (Department_Id, Department_Name) Values ( Null, 'Mo7amed Reda'); EXCEPTION When V_Error Then ; ('البذ ػغ لي ت داخ ا ؼ د') DBMS_OUTPUT.PUT_LINE User Defined Exceptions وهما نىعان : Raise Raise_Application_Error ز ا شح الر عذ شى خ أل يظ ش ب PL/SQL Procedural Successfully ى ا ى د يغجك فؼ يب ي غؼ ف ر فيز ا غ ة ى ثذال ا يظ ش ب Error ي ضؼ ا ا ؼؼ يخ رز يظ ش ا ب غؾذ فؼ عشيك اسزخذا Raise سزغيغ ارا ي فز ا ى د ا غ ة فإ ب غجشح ػ اظ بس سسب خ ر ضؼ ا ا ؼ يخ رز.

Example V_Error Exception ; Update Employees Set Salary = 12000 Where Employee_Id = 123456 ; IF SQL%Notfound Then Raise V_Error ; End IF; DBMS_OUTPUT.PUT_LINE (SQL%Rowcount); Commit; EXCEPTION When V_Error Then ;(' ال ي صذ ظف ب زا ا شل ') DBMS_OUTPUT.PUT_LINE Raise )1 سزخذ Raise ىب ظ ش ب سسب ا ر ذ ػ يخ ا زؾذيش ث غبػ زا عجؼب يؾذس ؼذ ع د ظف ث زا ا شل. %ROWCOUNT == < رم ثب مشاءح ػذد ا ظف ف ا ز رأصشد ثب ؼ يخ خالي ا ي س فإرا و ب وزج ب Commit لج DBMS فإ يظ ش يغجغ شيئب ر ه أل Commit رم ثؼ Save ؼ يبد ا ي س ا ا Database ر ؾ ب ف ا ي س.

Raise_Application_Error )2 ف ز ا شح بن Error ا ال الي ى ا جش ظ خال يسزغيغ ظ س Error طشيؼ ض Error ا ساو سل سسب خ ا ى ا م ثأسزخذا اسلب خبطخ ثب ساو مذ لب ذ ا ساو ث ع غ ػ األسلب سزغيغ اسزخذا ب رجذأ 21111 ؽز 21222 سزخذ Raise_Application_Error ؽز م ث ز ا ؼ يخ سزغيغ ا فؼ ر ه ث ىب ي ب ا ب غمخ ا Exception Section ا غمخ ا Executable. Section. Executable Section Delete From Employees Where Employee_Id = 123456; IF SQL%Found Then DBMS_OUTPUT.PUT_LINE (SQL%Rowcount ); Elsif SQL%Notfound Then ;( الرقم بهذا مىظف يىجد ال,20001) Raise_Application_Error End IF; Exception Section V_Name Varchar2(20); Select Last_Name into V_Name From Employees Where Employee_Id = 123456; EXCEPTION When No_Data_Found Then ;( ا شل ب زا ظف ي صذ ال,20002) Raise_Application_Error

PLSQL Program Units

CHAPTER 1 Creating Stored Procedures ع ا اع ا ج وبد يؼزجبس اؽذ افشاد ػبئ خ ا Subprogram رى ي شجي ثب ج ن ا Anonymous غ إخزالف ثسيظ غ ا Procedure ال سزخذ ا Declare سزخذ ثذال Is ا As ؽز ضغش ا رؼشيف Variables ا جبل و ب يضح ا Procedure ا ب م ثىزبثخ ا ى د شح اؽذح سزغيغ ر فيزح ا ذاء ػ ي اوضش شحأل خض ف ا Database ى يس ا ضش س ا يؼ د زا األعشاء ثمي خ ؼي... ا ا ى ا يؼ د ثمي خ ا ال... ا فشق بي ا Function) Subprogram (Procedure, ا Anonymous Block Syntax Create [ or Replace ] Procedure Procedure_Name Is As [ (Parameter1 [Mode1] Datatype1, Parameter2 [Mode2] Datatype2,...) ] Variables; END [Procedure_Name]; م ثإسزخذا و خ زؼذي ػ ا. Procedure غ ظت : ا Procedure رسزغيغ ا رأخز Parameters ا ال. ػ ذ ػ ا Procedure ا ا Function فإ رظ ش سسب خ رم ي Procedure Created فإ ا Compiler ارا وب بن Error يم ثؼ Check ػ ي فإرا وب ا Syntax يس ث أخغبء فس ف رظ ش ز ا شسب خ Warning:. Function Created with Compilation Error ؼشفخ ا خغأ ا ع د م ثىزبثخ. Show Errors

CREATE PROCEDURE Add_Dept IS V_Dept_Id Number := 280 ; V_Dept_Name Varchar2(20) := 'Outbox'; Insert into Departments ( Department_Id,Department_Name) ل بؼ Procedure حم باػافت اداسة صذيذة Values (V_Dept_Id, V_Dept_Name ); DBMS_OUTPUT.PUT_LINE ('Inserted ' SQL%Rowcount ' row '); Execute Add_Dept ; ب زا ا شى لذ ا بؼ Procedure ى ا ح فز بؼذ ا اسد ا ا فز ا فا ر ه يخ بشيمخي ا : Add_Dept ; غ ظت : يفؼ ئعخخذا ا شيمت ا زا يت أل ا شيمت األ ال حؼ ف ا ف س ض غخمبال. Parameters شجي ثب زغيشاد ى ر شس ا مي خ فمظ داخ ب ا ب ا زغيش فيم ثؾ ا مي خ م ثزؼشيف ا Parameter ثؼذ إس ا. Length اليأخز Procedure P_Name Varchar2(20) x P_Name Varchar2 ا Parameter ا اع :

Create Procedure Add_Name (P_Name Varchar2 ) Add_Name ( Mo7amed Reda ); ا Parameter ف ؽب خ األ شبء ض : : Parameters Formal غ ظت : : Actual Parameters ا Parameter ف ؽب خ إػغبء لي خ ض : Using IN Parameters: Example ل بؼ Procedure م باػائ ا سل ا ظف غبت ا غ افض حم با خؼذي ف شحب ب ز ا غبت CREATE OR REPLACE PROCEDURE Raise_Salary ( P_Id IN Employees.Employee_Id%Type, P_Percent IN Number) IS Update Employees Set Salary = Salary + (Salary * P_Percent) Where Employee_Id = P_Id; END Raise_Salary; Raise_Salary ( 100,.4 ); خ فيز ا: Using OUT Parameters: Example ل بؼ Procedure م باػائ ا سل ا ظف حؼي ا ئع شحب CREATE OR REPLACE PROCEDURE Query_Emp (P_Id IN Number,P_Name OUT Varchar2, P_Sal OUT Number) IS Select Last_Name, Salary Into P_Name, P_Sal From Employees Where Employee_Id = P_Id; END Query_Emp;

V_Name Varchar2(20); V_Sal Number; Query_Emp ( 171, V_Name, V_Sal ); DBMS_OUTPUT.PUT_LINE ( V_Name V_Sal ); خ فيز ا : VARIABLE V_Name Varchar2(25) VARIABLE V_Sal Number EXECUTE Query_Emp (171, :V_Name, :V_Sal) ; / PRINT V_Name, V_Sal ا ع. Out ث ب Parameter ؿشيمت أخش خ فيز : غ ظت : الثذ ػ Variable ػ ب م ثب ذاء ػ ا Procedure Using IN OUT Parameters: Example ع ف أػيه سل باي اسيذ اعخخشاص ب زا ا شى 0984455(010) CREATE OR REPLACE PROCEDURE Format_Phone (P_Phone_No IN OUT Varchar2) IS P_Phone_No := '(' Substr (P_Phone_No,1,3) ')' Substr (P_Phone_No,4,3) '' Substr (P_Phone_No,7); END ;

خ فيز ا: غ ظت : V_Phone Varchar2(20) := '01009844556'; Format_Phone (V_Phone ); DBMS_OUTPUT.PUT_LINE (V_Phone ); ػ ذ ب م ثب ذاء ػ ا Procedure ث ب Parameter ا ع In Out Syntax for Passing Parameters الثذ ػ Variable سزغيغ ا ذاء ػ ا Parameters ثأوضش شى : Positiona )ا خشحيب( م ب ػغ لي ا Parameter ب فظ ا خشحيب ا ص د ف ا Procedure Named Combination )األع ( م بىخابت ئ ا Parameter بض اسة ا مي ةا خاطت ب : P_Name => Mo7amed Reda )األ ا خشحيب( م بىخابت ا مي با شيمخي ا غابمخي ؼا حبذأ 1111 حضيذ ب ؼذي 1 Create Sequence Reda_Seq Start With 1000 Increment By 1 ; ل با شاء Sequence ل بؼ Procedure ا غابمت م باػائ ا سل ا ظف حؼي ا ئع شحب ر ل با ذاء ػ ي ا با زالد ؿشق CREATE OR REPLACE PROCEDURE Add_Dept ( P_Name Varchar2, P_Loc IN Number ) IS Insert Into Departments ( Department_Id, Department_Name, Location_Id) Values (Reda_Seq.Nextval, P_Name, P_Loc); END Add_Dept;

Passing by Positional Notation Execute Add_Dept ( Education, 2300 ); Passing by Named Notation Execute Add_Dept (P_Loc => 2400, P_Name => Training ); Passing by Combination Notation Execute Add_Dept ( Advertising, P_Loc => 2500 ); خ فيز : Invoking Procedures سزغيغ ا ذاء ػ ا Parameters خالي anonymous blocks رؼشض ب أل ض خ وضيشح ف زا ا ظذد ايضب خالي CREATE OR REPLACE PROCEDURE Process_Employees IS Commit; Cursor Emp_Cursor is Select Employee_Id From Employees; For Rec in Emp_Cursor Loop Raise_Salary Rec.Employee_Id,.3); End Loop; END Process_Employees; Handled Exceptions Procedure اخش. ػ إفزشاع ا ب ل ب ثؼ Procedure رس Add_Dept ل ب ثؼ Exception ثؼ Procedure اخش ظيفز ب ا ذاء ػ. Add_Dept ارا يغذد عذد خأ ف ا Add_Dept ى لذ ل ا ب ؼا ضخ ارا و ب لذ ل ب ث ؼب غز ف يؾذس شيئب ا ب ارا وب بن Error ب األخغبء ا ز ي ى ا رمغ ث ب ص ل ب يؼب ظ فس ف يظ ش ب Error ي لف و ش ء. Syntax Removing Procedures DROP Procedure Procedure_Name ; Example DROP Procedure Raise_Salary;

Viewing Procedures in the Data Dictionary Select * From User_Source Where Name = ' Add_Dept ' And Type = 'PROCEDURE' Order by Line; شؤيت ؼشفت ا ى د ا ز لذ ل ج بىخابخ داخ ا Procedure ا خ ل ج بؼ ا Select Object_Name From User_Objects Where Object_Type = 'PROCEDURE'; ش ؤيت ؼشفت اع اء ا Procedure ا خ ل ج بؼ ا

ع ا اع ا ج وبد يؼزجش اؽذ افشاد ػبئ خ ا Subprogram إخزالف ثسيظ الرسزخذ Declare غ ا Function ا خ رؼشيف Variables ا ب ا جبل و ب يضح ا Function رسزخذ ثذال ب ا Is رى ي يى شجي ثب ج ن ا ؼبد ا Anonymous As الثذ وزبثخ ا Is غ As ؽز ضغش CHAPTER 2 Creating Stored Functions أل ب خض ف ا Database الثذ ا رؼ د ا Function ا ب م ثىزبثخ ا ى د شح اؽذح ا ذاء ػ يخ ر فيزح اوضش شح ثمي خ. ا فشق بي ا Function) Subprogram (Procedure, ا Anonymous Block Syntax CREATE [ OR REPLACE ] FUNCTION Function_Name [(Parameter1 [mode1] Datatype1,...)] RETURN Datatype IS AS [Variables ; ] RETURN expression; END [function_name]; غ ظت : ا ا ب م ثز يئخ ا Function ا ا برظ ا شاد ف ا Return Datatype ا فشق ثي ا Procedure ا Function ا ز في ؾذد ا زغيش ا ز شيذ ا ضغ في إسزخشاعخ سيى ا ز ل ذ ثزؾذيذح سزمج خالي Return Expression ا مي خ. اسزخذا Paramerter اال ا ع In فمظ. ال سزغيغ غ ا Function ايضب ا Return ػ ذ رؾذيذ ا Datatype ال ؾذد ب و ب ػشف ب ب سبثمب ػ ذ رؼشيف ب فإ ب ال ؼغي ب Length ا Paramerter Length ايضب.

ل بؼ Function ؼي ا سل ا ظف حؼي ا شحب CREATE OR REPLACE FUNCTION Get_Sal ( P_Id Number ) RETURN Number IS V_Sal Number:= 0; Select Salary into V_Sal From Employees Where Employee_id = P_Id; RETURN V_Sal; END Get_Sal; ان اسبغ ؿشق خ فيز ز ا Function غ ظت : الثذ ػ زغيش ػ ذ ا ذاء ػ ا Function ألسزشعبع ا مي خ في. ل بؼ Function ؼي ا ا شحب حؼي ا طاف ا ؼشيبت ا خاص ب CREATE OR REPLACE FUNCTION Tax (P_Value IN Number) RETURN Number IS RETURN (P_Value * 0.08); END Tax;

Select Employee_Id, Last_Name, Salary, Tax(Salary) From Employees Where Department_Id = 100; ؼي ا سل ا ظف حؼ د ب True شحب اوبش خ عؾ شحباث اداسح False ا ؼىظ CREATE FUNCTION Check_Sal ( P_Id Number) RETURN Boolean IS V_Dept_Id Employees.Department_Id%Type; V_Empno Employees.Employee_Id%Type ; V_Sal Employees.Salary%Type; V_Avg_Sal Employees.Salary%Type; Select Salary,Department_Id into V_Sal,V_Dept_Id From Employees Where Employee_Id = P_Id; Select Avg(Salary) into V_Avg_Sal From Employees Where Department_Id=V_Dept_Id; IF V_Sal > V_Avg_Sal THEN RETURN True; ELSE RETURN False; End IF; EXCEPTION When NO_DATA_FOUND Then RETURN Null; خ فيز ا : Function ل بؼ

V_Check Boolean ; V_Check := Check_Sal ( 205) ; IF V_Check = True Then DBMS_OUTPUT.PUT_LINE ( T ); ELSIF V_Check = False Then DBMS_OUTPUT.PUT_LINE ( F ); End IF ; Removing Functions Syntax DROP Function Function_Name ; Example DROP Function Get_Sal ;. خ فيز ا: غ ظت : شؤيخ ا خغأ ىزت Show Errors Viewing Functions in the Data Dictionary شؤيت ص ؼشفت ا ى د ا ز ل ج بىخابخ داخ ا Function ا خ ل ج بؼ ا. Select Text From User_Source Where Name = ' Get_Sal ' And Type = 'FUNCTION' ; شؤيت ؼشفت أع اء ا Functions ا خ ل ج بؼ ا. Select Object_Name From User_Objects Where Object_Type ='FUNCTION';

ا زؼشف ػ ا Backage ى بر ب. ا شبء Backage األ ذاف : رزض غ ػخ.Exceptions Functions Procedures Cursors Variables ا زؼشف ػ ويفيخ اسزذػبء رشغي ا. Backage CHAPTER 3 CREATING PACKAGES Body )2 صضئي ا : حخى ا Backage Specification )1 الؽظ ا الثذ اشبء ا Specification ا ال ص م ثإ شبء ا Body ؽيش ا الي ى اشبء ا Body ا ال. ي ى ه إسزذػبء ا ػ (Call) أل Procedure ا Function ثششط ع د ف ا Specification )ا غضء ا (Public الي ى أسزذػبء Procedure ا Function ا ع دي ف ا Package Body فمظ )ا غضء ا Private فمظ(. ى. ف ا شع ا غابك :. Specification ف ا Procedure ؽيش ر رؼشيف ز ا )Procedure )A ػ عشيك ا Backage ي ى ب إسزخذا ا Specification ف ا Procedure ؽيش رؼشف ز ا )Procedure )B ػ عشيك ا Backage الي ى ب إسزخذا ا الؽظ ا يز ؽفظ ا Specification ا Body ا خبطي ثب Backage ف عضئي فظ ي داخ األ ساو.

ويف يم ا ساو بخ فيز ا ى د ا خاص با :Backage يز وزبثخ ا ى د ا ال ف. Text File 1(. يز ػ Load ى د ا ز ر وزبثز ا ا Environment. Isql*plus 2( يز ػ Compile And Store Backage ارا وب ا ى د س ي يز رخضي ا Backage ف ا Database ارا وب ف 3( ا ى د ا خغأ س ش ا ا Backage ي عذ ث ب اخغبء شؤيخ ا خغأ م ثىزبثخ األ ش Show Errors ر ه ؼشفخ ا. Compilation Errors ا. Body يز ػ Execute ى ا Specification )4 ئ شاء ا Backage Specification ثذال ا م : Or Replace إخزيبسيخ م ثىزبثز ب ؽز ز ى ػ ا رؼذي ف ا Backage Specification ثإصا ز ب ص ا زؼذي في ب. ي ى إسزخذا ثؼذ ر ه ػ ؽيش يز رؼشيف ف ا Specification : Subprogramme ا Procedure ا Function عشيك ا. Backage

زاي : Parameters Description Package_name حؼبش ػ األع ا خاص با Package Public Type and item Declaration Declare Variable, Cursor, Constant, Exception, or Types Subprogram Specification ا Function حؼشيف وال ا Procedure ا ذف ا ضبي ا زب ا شبء Package رم ثب زأوذ أ ا ظف عذيذ يز رؼيي ف ا ششوخ الثذ أ يى ا Comm ا خبص ث ال اوجش Comm ف ا ششوخ. ر رؼشيف Variable ثإس G_comm يأخز لي خ إفزشاضيخ 0.10 أيضب ر رؼشيف Procedure ثإس Reset_comm ب Parameter اؽذ ػ. Number ثب زب يى ا G_comm ا Reset_comm األص ب ا ع public ر ه أل ر رؼشيف ف ا Specification إ شبء ا. Package Body : Or Replace إخزيبسيخ م ثىزبثز ب ؽز ز ى ػ ا رؼذي ف ا Backage Body ثذال ا م ثإصا ز ب ص ا زؼذي في ب. ا ال يز رؼشيف م ب ؽيش يز رؼشيف ف ا Specification : Subprogramme ا Procedure ا Function ثىزبثخ ا ى د ا خبص ث ف ا. Backage Body

حابغ ا زاي ا غابك : م داخ ا Package Body با شاء أ Subprogramme ح حؼشيف ا ف ا Specification ا يخ حؼشيف ا و ا ف ا زاي ا غابك. غ ظت : يغت ا يى إس ا Package ف ا غضء األ ي (Specification) فس األس ف ا غضء ا ضب (Body). ويف ي ى ئعخذػاء حشغي ا. Package ف ا ضبي ا سبثك ر ر فيز ا Package ػ عشيف فس ا سزخذ ا ا USER ا اس ا ؾض خ ا ال ص مغخ ص اس االعشاء ا ا ظيفخ. ا ز لب ثإ شبؤ ب. ف زا ا ضبي ر ر فيز ا Package ػ عشيك سزخذ اخش ض SCOTT ر ه ػ عشيك ؼ زا ا سزخذ ا Privilage ا ظالؽيخ ا بسجخ ى يز ى إسزخذا ز ا. Package ا

. Package Body بذ Package زاي : حؼشيف ف زا ا زاي ل ا بخؼشيف Global ا ع ا Variable با خا حى ز ا Package Specification داخ ا Variables لذ ل ا با شاء ا Package ا غابم حغخ ػ ض ػت ا Variables ز ا ر م با شاء ا Procedure ا خا يت ح ػظ ئ ىا يت ئعخخذا ا. Procedure داخ ا Package Variables حغخ ػ لي ئفخشاػيت. Removing Package عزف ا : Package ػشف ا عابما ا ا Package مغ ا صضئي )سأط ( Specification )صغ (Body ز ه ي ى ئصا ت ا ضغ Body بماء ا شأط Specification حؼ بذ ا ضغ ر ه ىائ اث ا خ يظ ا ػاللت ا شحبت با Body ز ا خغيشاث ا خ ا لي ئبخذائيت ا Exceptions ا Cursors ا ا األصشاءاث ا ذ اي فأ ا الحؼ ح خش خأ.

Body بشيمت أح احيىيت. غ ظت : ػ ذ عزف ا Package Specification يخ عزف ا ضايا اعخخذا ا : Package )1 )2 )3 )4 ي ى ه حض يغ بؼغ ا Subprogramme ا شحبت ببؼؼ ا ف Package اعذة. ي ى ػ ئخفاء ى د Information) (Hiding خالي ا Package ر ه ف ا ضضء ا. Private اداء افؼ. ا ش ء ػ يت ا ظيا عيذ حغ ػ يت ا ظيا ت بأعخخذا ا Backage ا ا غض.

ػ يت ا :Overloading رزيؼ ز ا ؼ يخ إسزخذا فس األس ؼذح Procedures ا Functions إخزالف ثي ز ا Subprogramme ف ػذد ا ا ؼ يخ وزبثخ رغ يش ا جشا ظ ث ش خ اوضش. CHAPTER 4 More Package Concepts داخ فس ا Package ز ا ؼ يخ رغ ت ا يى بن Parameters ا رشريج ا ا اع ثيب بر و ب س ف يز ششؽ رزيؼ ز الؽظ ا ز ا ؼ يخ الي ى ا رؾذس Procedures ا Functions خبسط ا. Package ز ا ؼ يخ ر ى ا جش ظ رؼشيف ػذح ثش غيبد خز فخ ث فس األس داخ فس ا Package. يز ا زفشيك ا زؼشف ػ ا Subprogramme ا شاد إسزخذا ث اسغخ األخزالف ف ػذد ا Parameters ا ع ا جيب ب بد ز ا Parameters ا رشريج. غ ظ : الرز ػ يخ ا Overloading ارا وب األخزالف فمظ ثي ا Parameters ف ع ا جيب بد ز ا جيب بد فس ا ؼبئ خ ض Decimal( ) Number, ب فس ػبئ خ ا ع ا شل ( char ) Varchar2, فس ػبئ خ ا ع ا ؾشف. ا يى األخزالف فمظ ف ا مي خ ا شعؼخ (Return) ر ه ف ا ذ اي ؽز وب ا اع ثيب بد ا شع ع ػبئالد خز فخ. ارا ؽذس بسجك الؽظبد يؾذس خغبء اليؾذس ػ يخ. Overloading زاي ػ ا : Overloading. ث زا ى لذ ا شأ ب. Package Specification ف ا ضبي ا سبثك لذ ا شبؤ ب Package ثذاخ ب اص ب Proceure ث فس األس زغجيك ا Overloading األخزالف ثي ا Proceduers ا : ا Procedure األ رأخز صالصخ. Parameters ا Procedure ا ضب يخ رأخز إص ب Parameter فمظ الغيش.

ثؼذ ر ه م ثإ شبء ا Package Body و ب ي : ا شى ا خا : يجي ويفيخ إسزذػبء ر فيز وال ا Proceduers ا سبثك رؼشيف ف ا Package Specification زيغخ ر فيز ب :

زاي اخش ػ ا :Overloading غ ظت: ؼظ ا ذ اي ا ذاخ يخ أل ساو غجك ث ب ف ا. Overloading ضبي ػ ر ه دا خ ا To_Char و ب ف ا ضبي ا سبثك ش ف ا ضبي ا سبثك اسثغ رؼشيفبد خز فخ فس ا ذا خ ث فس األس ر ه ف Package ثإس. Standard األ ث ب Parameter اؽذ ػ Date رشعغ. Varchar2 ا ضب يخ ث ب Parameter اؽذ ػ Number رشعغ. Varchar2 ا ضب ضخ ث ب إص ب Parameters األ ي ػ DATE ا ضب Varchar2 رشعغ. VARCHAR2 ا شاثؼ ث ب إص ب Parameters األ ي ػ Number ا ضب Varchar2 رشعغ. VARCHAR2 غ ظت : ارا ر ػ دا خ اخش ث فس األس ذ اي داخ يخ يز إسزجذاي ا ذ اي ا مذي خ ضغ ا ذ اي ا غذيذح ا ز ػ ب ا سزخذ ر ه ف ا ذ اي ا خبطخ ثب. Standard Package ئعخخذا ا Forward Declartions غ ظت : ػ ذ إسزخذا ا Function داخ ا Procedure ا رى ا Function لذ ر إ شبؤ ب رؼشيف ب لج ا Procedure رؼشيف ا ىبئ س اء زغيش ا Subprogramme لج األسزخذا. فيغت

فف ا ضبي ا سبثك الؽظ ػذ إ ىب يخ إسزخذا ا Procedure ا س Calc_rating ؽيش ل ب ثإسزخذا ا Procedure لج رؼشيف زا الي ى إسزخذا ف ا Pl\SQL ف ى ز ى إسزخذا ر ه ا Procedure الثذ رؼشيف ا ال ف ا غضء ا خبص ثب Declartion ص م ثؼذ ر ه ثإسزخذا ز ا Procedure ف ا غضء ا خبص ثب Body و ب ف ا ضبي ا زب : ف ا ضبي ا سبثك ر ؼب غخ ر ه ا شى خ ر ه ػ عشيك رؼشيف (Calc_Rating) Procedure ف ا غضء ا خبص ثب. Declration ز ا ؼ يخ رزيؼ رغ يغ اوضش Subprogramme شرجغخ ثجؼض ب ف Package اؽذح ثؾيش يز رؼشيف ف ا Specification ا خبص ثب Package وزبثخ ا ى د داخ ا Body ر ه يفيذ ف إخفبء رفبطي ا ى د ا صيبدح ا سشيخ. (security)

Mo7amed Reda Abd ElRahman ORACLE FINANCIAL CONSULTANT INSTRUCTOR ORACLE FINANCIAL R12 INSTRUCTOR ORACLE DEVELOPER ********************** Scientific Computing Center Mansoura University Email:mreda47@hotmail.com https://www.facebook.com/eng.mohamedreda.scc Mobile: 01066734381