SQL-PL
Upcoming SlideShare
Loading in...5
×
 

SQL-PL

on

  • 776 views

 

Statistics

Views

Total Views
776
Views on SlideShare
776
Embed Views
0

Actions

Likes
0
Downloads
39
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    SQL-PL SQL-PL Presentation Transcript

    • SQL - PL ‫دسٔط‬ 2
    • SQL - PL ‫دسٔط‬ 3
    • SQL - PL ‫دسٔط‬ 4
    • ‫‪Declare‬‬‫ُْا حعشٌف انًخغٍشاث ٔ انًؤششاث‬‫‪Begin‬‬‫‪ Body‬حق انبشَايح‬‫‪Exception‬‬‫يعاندت األخطاء‬‫;‪end‬‬ ‫دسٔط ‪SQL - PL‬‬ ‫5‬
    • ‫يالحظت ْايت :‬ ‫قغى ‪ٔexception‬قغى ‪declare‬‬ ‫ًْا اخخٍاسٌٍ أي ال ٌشخشط ٔخٕدًْا‬‫أي إرا كاٌ ال ٌٕخذ نذٌك حعشٌف يخغٍشاث ال حغخخذو ‪Declare‬‬ ‫ٔإرا كُج ال حخعايم يع األخطاء ال حغخخذو ‪Exception‬‬ ‫دسٔط ‪SQL - PL‬‬ ‫6‬
    • name :=ahmed khaled; v:=15;v_x number; ٍٍ‫ٌدب ٔضع انُقطخ‬v_y number(10); = ‫قبم‬v_z number(8,2) := 55.22;name varchar2(50);v_lname varchar2(20) :=Hilal;v_bdate date;is_married boolean :=false; SQL - PL ‫دسٔط‬ 7
    • type% : ً‫خاصيح ٔٛع اٌحم‬declare v_did departments . department_id % type ; SQL - PL ‫دسٔط‬ 8
    • ‫: ‪% rowtype‬‬ ‫يدًٕعت يخغٍشاث، ٔحغخخذو نخأعٍظ يصفٕفت يٍ‬ ‫انًخغٍشاث يبٍُت عهى األعًذة انًٕخٕدة فً يؤشش‬ ‫يا أٔ خذٔل يا‬‫‪declare‬‬ ‫‪v_rec departments‬‬ ‫; ‪% rowtype‬‬ ‫دسٔط ‪SQL - PL‬‬ ‫9‬
    • dbms_output.put_line( );dbms_output.put_line(v_y);dbms_output.put_line(###########);dbms_output.put_line(The name is : || name); ٌٍ‫انًٕخذة ضًٍ عًهت انطباعت ًْ نهٕصم بٍٍ انخعبٍش‬ || ‫فائذة‬ SQL - PL ‫دسٔط‬ 10
    • declare v_did number; v_dname varchar2(50); v_mid number; v_lid number;begin select department_id,department_name,manager_id,location_id into v_did,v_dname,v_mid,v_lid from departments where department_id=10; dbms_output.put_line(The recors is : ); dbms_output.put_line(ID : || v_did); dbms_output.put_line(Name : || v_dname); dbms_output.put_line(Manager: ||v_mid); dbms_output.put_line(Location : || v_lid);end ; SQL - PL ‫دسٔط‬ 11
    • ‫ حغخخذو الخخٍاس األعًذة ٔانبٍاَاث انخً َحخاخٓا‬selectbegin select department_id , department_name , manager_id , location_id Declare ً‫ حغخخذو الخخٍاس األعًذة ٌٚىٓ يٍ خالل ياحى حعشٌفّ ف‬into into v_did , v_dname,v_mid , v_lid ‫حغخخذو نخحذٌذ اندذٔل انزي عُغخشخع يُّ انبٍاَاث‬ from departments where department_id=10; SQL - PL ‫دسٔط‬ 12
    • declare v_did number; v_dname varchar2(50); v_mid number; v_lid number; begin v_did :=666; v_dname :=Imam UN; v_mid :=105; v_lid :=1700; insert into departments( department_id,department_name, manager_id , location_id) values(v_did , v_dname , v_mid , v_lid);end; SQL - PL ‫دسٔط‬ 13
    • declare v_did departments.department_id%type; v_dname departments.department_name%type; v_mid departments.manager_id%type;begin select department_id,department_name,manager_id into v_did,v_dname,v_mid from departments where department_id=10; dbms_output.put_line(The recors is : ); dbms_output.put_line(ID : || v_did); dbms_output.put_line(Name : || v_dname); dbms_output.put_line(Manager: ||v_mid);end ; SQL - PL ‫دسٔط‬ 14
    • declare v_did departments.department_id %type; v_dname departments.department_name %type; v_mid departments.manager_id %type; SQL - PL ‫دسٔط‬ 15
    • begin select department_id , department_name , manager_id into v_did , v_dname , v_mid from departments where department_id=10; ‫حغخخذو الخخٍاس األعًذة ٔانبٍاَاث انخً َحخاخٓا يٍ خالل‬ SQL - PL ‫دسٔط‬ 16
    • dbms_output.put_line(The recors is : ); dbms_output.put_line(ID : || v_did); dbms_output.put_line(Name : || v_dname); dbms_output.put_line(Manager: ‘ || v_mid);end ; SQL - PL ‫دسٔط‬ 17
    • declare v_rec departments % rowtype;begin select * into v_rec from departments where department_id=10; dbms_output.put_line(The recors is : ); dbms_output.put_line(ID : || v_rec.department_id); dbms_output.put_line(Name : || v_rec.department_name); dbms_output.put_line(Manager: ||v_rec.manager_id); dbms_output.put_line(Location : || v_rec.location_id);end ; SQL - PL ‫دسٔط‬ 18
    • ‫‪declare‬‬ ‫;‪v_rec departments % rowtype‬‬ ‫عشفُا (‪ ًْ ٔ )v_rec‬يصفٕفت يٍ انًخغٍشاث يبٍُت‬ ‫عهى األعًذة انًٕخٕدة فً اندذٔل‬ ‫دسٔط ‪SQL - PL‬‬ ‫91‬
    • begin select * into v_rec from departments ‫ُْا اخخشَا خًٍع انحقٕل‬ where department_id=10; ‫انًٕخٕدة فً اندذٔل‬ SQL - PL ‫دسٔط‬ 20
    • dbms_output.put_line(The recors is : ); dbms_output.put_line(ID : || v_rec . department_id); dbms_output.put_line(Name : || v_rec . department_name); dbms_output.put_line(Manager: ||v_rec . manager_id); dbms_output.put_line(Location : || v_rec . location_id );end ; SQL - PL ‫دسٔط‬ 21
    • SQL - PL ‫دسٔط‬ 22
    • ‫1.خًهت انششط‬IF then SQL - PL ‫دسٔط‬ 23
    • SQL - PL ‫دسٔط‬ 24
    • declare v_salary employees.salary %type;begin select salary into v_salary from employees where employee_id=150; if v_salary > 10000 then dbms_output.put_line(VIP); end if ;end; v_salary employee_id VIP SQL - PL ‫دسٔط‬ 25
    • ‫خٛاب اٌششط إرا واْ خطأ‬‫دسٔط ‪SQL - PL‬‬ ‫62‬
    • declare v_salary employees.salary %type;begin select salary into v_salary from employees where employee_id=102; if v_salary > 10000 then dbms_output.put_line(VIP); else dbms_output.put_line(normal); end if ;end; normal SQL - PL ‫دسٔط‬ 27
    • ‫خٛاب اٌششط ارا واْ خطأ‬‫دسٔط ‪SQL - PL‬‬ ‫82‬
    • declare v_salary employees.salary%type;begin select salary into v_salary from employees where employee_id=150; if v_salary > 10000 then dbms_output.put_line(VIP); elsif (v_salary >=3000 and v_salary <=10000) then dbms_output.put_line(normal); else dbms_output.put_line(low); end if;end; SQL - PL ‫دسٔط‬ 29
    • declare v_salary employees.salary%type;begin select salary into v_salary from employees where employee_id=150; if v_salary > 10000 then dbms_output.put_line(VIP); elsif (v_salary >=3000 and v_salary <=10000) then dbms_output.put_line(normal); else dbms_output.put_line(low); end if;end; SQL - PL ‫دسٔط‬ 30
    • normal LowSQL - PL ‫دسٔط‬ 31
    • declare v_salary employees.salary%type;begin select salary into v_salary from employees where employee_id=150; if v_salary > 10000 then dbms_output.put_line(VIP); elsif (v_salary between 3000 and 10000) then dbms_output.put_line(normal); else dbms_output.put_line(low); end if;end; SQL - PL ‫دسٔط‬ 32
    • normal Low SQL - PL ‫دسٔط‬ 33
    • ‫نكٍ الحع ُْا كخابت ‪elsif‬‬ ‫ٔال حخطً فٍٓا فًٓ نٍغج ‪elseif‬‬‫بئيكاَُا اعخخذاو ( ‪ ) And , Between‬داخم‬ ‫خًهت انششط ) ‪( IF & elsIf‬‬ ‫دسٔط ‪SQL - PL‬‬ ‫43‬
    • ‫2. انخكشاس‬ ‫ٌٕٔخذ عذة أٔايش نهخكشاس ًْٔ:‬‫دسٔط ‪SQL - PL‬‬ ‫53‬
    • (i) loop-exit-end SQL - PL ‫دسٔط‬ 36
    • ‫ششط اٌخشٚج‬‫دسٔط ‪SQL - PL‬‬ ‫73‬
    • declare v_counter number := 1;begin v_counterloop dbms_output.put_line(v_counter); v_counter:=v_counter+1; exit when v_counter>10;end loop;end ; SQL - PL ‫دسٔط‬ 38
    • declarev_counter number :=10;begin v_counterloop dbms_output.put_line(v_counter); v_counter:=v_counter-1; exit when v_counter=0;end loop;end ; SQL - PL ‫دسٔط‬ 39
    • (ii) WHILE - LOOP - END SQL - PL ‫دسٔط‬ 40
    • ‫اٌششط‬‫دسٔط ‪SQL - PL‬‬ ‫14‬
    • declare v_counterv_counter number :=1;beginwhile v_counter <=10 loop dbms_output.put_line(v_counter); v_counter:=v_counter+1;end loop;end ; SQL - PL ‫دسٔط‬ 42
    • declare v_counterv_counter number :=10;beginwhile v_counter >=1 loop dbms_output.put_line(v_counter); v_counter:=v_counter-1;end loop;end ; SQL - PL ‫دسٔط‬ 43
    • declare v_sal employees.salary %type; v_counter number :=0;begin select salary into v_sal from employees where employee_id=106; while v_sal <10000 loop v_sal :=v_sal*1.2; v_counter :=v_counter+1; end loop; dbms_output.put_line(The number of monthes is : ||v_counter);end; SQL - PL ‫دسٔط‬ 44
    • v_sal v_counter salarySQL - PL ‫دسٔط‬ 45
    • (iii) FOR - IN - LOOP - END SQL - PL ‫دسٔط‬ 46
    • SQL - PL ‫دسٔط‬ 47
    • beginFor v_counter in 1 ..10 loop dbms_output.put_line(v_counter);end loop;end ; :: ‫ٔاذح اٌثشٔاِح‬ v_counter = 1 v_counter = 2 v_counter = 3 v_counter = 4 10 ُ‫سٛف يطثغ إٌى اٌشل‬ SQL - PL ‫دسٔط‬ 48
    • beginFor v_counter in reverse 1..10 loop dbms_output.put_line(v_counter);end loop;end ; SQL - PL ‫دسٔط‬ 49
    • ‫فً خًهت ‪For‬‬‫يا َحخاج ‪ Declare‬ألٌ َقذس َعشف يخغٍش‬ ‫داخم انششط‬ ‫يثم:: يثال سقى 21 ٔ 31‬ ‫دسٔط ‪SQL - PL‬‬ ‫05‬
    • CURSORS ‫اٌّؤششاخ‬ SQL - PL ‫دسٔط‬ 51
    • ‫‪CURSORS‬‬ ‫ذسرخذَ اٌّؤششاخ إلداسج ػثاساخ اٌرحذيذ ‪ Select‬في ٌغح ‪ٚ sql‬وّا‬ ‫الحظٕا األٚاِش اٌساتمح ِثً ‪ٚIF‬اٌرىشاس ٌُ ٔسرخذِٙا ِغ تيأاخ اٌدذاٚي‬ ‫اٌّخضٔح ٌٚؼًّ رٌه التذ ِٓ اسرخذاَ ٘زٖ اٌّؤششاخ.‬ ‫ٕٚ٘ان ٔٛػيٓ ِٓ اٌّؤششاخ ٘ي اٌضّٕيح ٚاٌصشيحح ٚسٛف ٔرطشق ٌه‬ ‫ٚاحذ تاٌرفصيً ٚاألِثٍح اٌالصِح.‬ ‫اٌّؤششاخ اٌصشيحح :‬ ‫يرُ ذؼشيف ٘زا إٌٛع ِٓ اٌّؤششاخ ودضء ِٓ اإلػالْ ‪ٚDeclare‬يدة اْ‬ ‫ذشرًّ ػثاسج ‪SQL‬اٌّؼشفٗ ػٍى ػثاسج اٌرحذيذ ‪Select‬فمظ‬ ‫دسٔط ‪SQL - PL‬‬ ‫25‬
    • ‫‪CURSORS‬‬ ‫ٚػٕذ اسرخذاَ اٌّؤششاخ اٌصشيحح دائّا ِا سرىرة أستؼح ِىٛٔاخ وّا يٍي:‬ ‫١- يرُ ذؼشيف اٌّؤشش في اٌدضء ‪Declare‬‬ ‫‪Begin‬‬ ‫٢- يرُ فرح اٌّؤشش تؼذ ػثاسج‬ ‫اٌصيغح اٌؼاِح ٌرؼشيف اٌّؤشش اٌصشيح وّا يٍي:‬ ‫دسٔط ‪SQL - PL‬‬ ‫35‬
    • CURSORS SQL - PL ‫دسٔط‬ 54
    • CURSORS SQL - PL ‫دسٔط‬ 55
    • CURSORS _ LoopSQL - PL ‫دسٔط‬ 56
    • declare v_id employees.employee_id%type; v_fname employees.first_name%type; v_lname employees.last_name%type; v_sal employees.salary%type; cursor c is select employee_id,first_name,last_name,salary from employees where department_id=50;begin open c; loop fetch c into v_id,v_fname,v_lname,v_sal; exit when c % notfound; dbms_output.put_line(v_id|| ||v_fname|| ||v_lname|| ||v_sal); end loop; close c;end ; SQL - PL ‫دسٔط‬ 57
    • declare v_id employees.employee_id%type; v_fname employees.first_name%type; v_lname employees.last_name%type; v_sal employees.salary%type; cursor c is select employee_id,first_name,last_name,salary from employees where department_id=50; SQL - PL ‫دسٔط‬ 58
    • ‫•جلب‬begin open c; loopfetch c into v_id,v_fname,v_lname,v_sal;exit when c % notfound;dbms_output.put_line(v_id|| ||v_fname|| ||v_lname|| ||v_sal); end loop; close c;end ; SQL - PL ‫دسٔط‬ 59
    • ‫الحظٕا في اٌّثاي اٌساتك أْ االسرؼالَ في ‪Cursor‬‬‫سٛف يؼٛد تسدً ٚاحذ ٌىٓ ِارا يحذز ٌٛ أػاد اٌّؤشش أوثش ِٓ سدً‬ ‫ٚأسدٔا اٌّشٚس ػٍى وافح اٌسدالخ ؟‬ ‫ٌزا ٔسرخذَ األِش ‪Found OR NotFound‬‬ ‫ٔسرخذَ األِش ‪ِ NotFound‬غ ‪Loop‬‬ ‫ً٘ سدالخ اٌّؤشش أرٙد أَ ال ٚٔؼشف رٌه ِٓ خالي خاصيح ‪Found‬‬ ‫دسٔط ‪SQL - PL‬‬ ‫06‬
    • CURSORS _ While while %found loopSQL - PL ‫دسٔط‬ 61
    • declare v_id employees.employee_id%type; v_fname employees.first_name%type; v_lname employees.last_name%type; v_sal employees.salary%type; cursor c is select employee_id,first_name,last_name,salary from employees where department_id=50;begin open c; fetch c into v_id,v_fname,v_lname,v_sal; while c %found loop dbms_output.put_line(v_id|| ||v_fname|| ||v_lname|| ||v_sal); fetch c into v_id,v_fname,v_lname,v_sal; end loop; close c;end ; SQL - PL ‫دسٔط‬ 62
    • begin open c; fetch c into v_id,v_fname,v_lname,v_sal; while c %found loop dbms_output.put_line(v_id|| ||v_fname|| ||v_lname|| ||v_sal); fetch c into v_id,v_fname,v_lname,v_sal; end loop; close c;end ; SQL - PL ‫دسٔط‬ 63
    • declare cursor c is select employee_id,first_name,last_name,salary from employees where department_id=50; v_rec c %rowtype;begin open c; fetch c into v_rec; while c %found loop dbms_output.put_line(v_rec.employee_id|| ||v_rec.first_name||||v_rec.last_name|| ||v_rec.salary); fetch c into v_rec; end loop; close c;end ; SQL - PL ‫دسٔط‬ 64
    • %rowtypev_rec SQL - PL ‫دسٔط‬ 65
    • declare cursor c is select employee_id,first_name,last_name,salary from employees where department_id=50;begin for v_rec in c loop dbms_output.put_line(v_rec.employee_id|| ||v_rec.first_name|| ||v_rec.last_name|| ||v_rec.salary); end loop;end; SQL - PL ‫دسٔط‬ 66
    • SQL - PL ‫دسٔط‬ 67
    • declare v_job employees.job_id%type; v_id employees.employee_id%type; cursor c is select employee_id,job_id from employees;beginopen c;loop fetch c into v_id,v_job; exit when c%notfound; if v_job=ST_CLERK then delete from employees where employee_id=v_id; elsif v_job=IT_PROG then update employees set department_id=50 where employee_id=v_id; else dbms_output.put_line(No Changes); end if;end loop;close c;end ; SQL - PL ‫دسٔط‬ 68
    • v_id v_sal v_sal v_idSQL - PL ‫دسٔط‬ 69
    • SQL - PL ‫دسٔط‬ 70
    • declare v_sal employees.salary%type; v_id employees.employee_id%type; cursor c is select employee_id,salary from employees;begin open c; loop fetch c into v_id,v_sal; exit when c%notfound; if v_sal < 3000 then update employees set salary=salary*1.2 where employee_id=v_id; elsif v_sal between 3000 and 10000 then update employees set salary=salary*1.15 where employee_id=v_id; else update employees set salary=salary*1.1 where employee_id=v_id; end if; end loop; close c;end ; SQL - PL ‫دسٔط‬ 71
    • Used ConditionsOne Fetch & ( % notFound ) Loop If Two Fetch & ( % Found ) While Don’t use Fetch For SQL - PL ‫دسٔط‬ 72
    • ‫‪Exception‬‬ ‫االسـرـثـٕـاء‬ ‫دسٔط ‪SQL - PL‬‬ ‫37‬
    • ‫‪Exception‬‬‫: ‪Exception handlers‬‬ ‫ْٕ خضء اخخٍاسي ، ٔ ْزا اندضء ٌبذأ بكهًت ‪Exception‬‬ ‫ٔ فً ْزا اندضء ٌخى ححذٌذ اإلخشاء انزي عٍخى احخارِ‬ ‫فً حانت حذٔد خطأ‬ ‫دسٔط ‪SQL - PL‬‬ ‫47‬
    • Exception :: ‫ذٕمسُ األخطاء إٌى‬1. Too many rows2. No data found3. Zero divide4. Others SQL - PL ‫دسٔط‬ 75
    • Exception 1. Too many rowsdeclare v_lname employees.last_name%type;begin dbms_output.put_line(Before Exception); select last_name into v_lname from employees; dbms_output.put_line(v_lname);exception when too_many_rows then dbms_output.put_line(Pleae set Comndition in sql statement);end; SQL - PL ‫دسٔط‬ 76
    • Exception 2. No data founddeclare v_lname employees.last_name%type;begin select last_name into v_lname from employees where employee_id=101; dbms_output.put_line(v_lname);exception when no_data_found then dbms_output.put_line(No data returned from sql statement);end; SQL - PL ‫دسٔط‬ 77
    • Exception 3. Zero dividedeclare v_lname employees.last_name%type;begin select last_name into v_lname from employees where employee_id=101; dbms_output.put_line(50/0);exception when zero_divide then dbms_output.put_line(Cant division on zero);end; SQL - PL ‫دسٔط‬ 78
    • Exceptioncreate table error( title varchar2(25), err_date date) Title ‫خاص تؼٕٛاْ اٌخطأ‬ err_date ‫خاص تراسيخ اٌخطأ‬ SQL - PL ‫دسٔط‬ 79
    • Exceptiondeclare v_lname employees.last_name%type;begin select last_name into v_lname from employees ; dbms_output.put_line(v_lname); dbms_output.put_line(50/0);exception when too_many_rows then dbms_output.put_line(Pleae set Comndition in sql statement); insert into error values(Too many rows,sysdate); when no_data_found then dbms_output.put_line(No data returned from sql statement); insert into error values(no data found,sysdate); when zero_divide then dbms_output.put_line(Cant division on zero); insert into error values(Zero Divide,sysdate);end; SQL - PL ‫دسٔط‬ 80
    • exception when too_many_rows then dbms_output.put_line(Pleae set Comndition in sql statement); insert into error values(Too many rows,sysdate); when no_data_found then dbms_output.put_line(No data returned from sql statement); insert into error values(no data found, sysdate); when zero_divide then dbms_output.put_line(Cant division on zero); insert into error values(Zero Divide,sysdate);end; SQL - PL ‫دسٔط‬ 81
    • Exception 4. Othersdeclare v_lname employees.last_name%type;begin select last_name into v_lname from employees ; dbms_output.put_line(v_lname); dbms_output.put_line(50/0);exception when too_many_rows then dbms_output.put_line(Pleae set Comndition in sql statement); insert into error values(Too many rows,sysdate); when no_data_found then dbms_output.put_line(No data returned from sql statement); insert into error values(no data found,sysdate); when zero_divide then dbms_output.put_line(Cant division on zero); insert into error values(Zero Divide,sysdate); when others then dbms_output.put_line(Error);end; SQL - PL ‫دسٔط‬ 82
    • exception when too_many_rows then dbms_output.put_line(Pleae set Comndition in sql statement); insert into error values(Too many rows,sysdate); when no_data_found then dbms_output.put_line(No data returned from sql statement); insert into error values(no data found,sysdate); when zero_divide then dbms_output.put_line(Cant division on zero); insert into error values(Zero Divide,sysdate); when others then dbms_output.put_line(Error); SQL - PL ‫دسٔط‬ 83
    • ‫‪Exception‬‬ ‫**حعشٌف انخطأ كًخغٍش‬‫طشٌقت اعخخذاو األٔايش انخانٍت يع داخم‬ ‫( ‪) Exception‬‬‫‪** Raise‬‬‫‪** Commit‬‬‫‪** Rollback‬‬ ‫دسٔط ‪SQL - PL‬‬ ‫48‬
    • Exceptiondeclare v_sal employees.salary%type; my_exp exception;begin update employees set salary=salary*1.7 where employee_id=200; select salary into v_sal from employees where employee_id=200; if v_sal >5500 then raise my_exp; else dbms_output.put_line(The salary is updated); commit; end if;exception when my_exp then dbms_output.put_line(The salary is more than 7500); rollback;end; SQL - PL ‫دسٔط‬ 85
    • :: ‫**حعشٌف انخطأ كًخغٍش‬ Declare ًٍ‫ًٌكٍ حعشٌف يخغٍش ( خاص باألخطاء ) ض‬declare v_sal employees.salary%type; my_exp exception; SQL - PL ‫دسٔط‬ 86
    • ‫‪** Raise‬‬ ‫‪if v_sal >5500 then‬‬ ‫;‪raise my_exp‬‬ ‫إرا طهع انششط ( ‪ ) IF‬خطأ ٌعًم إصاحت نّ( اعخشاض )‬ ‫إنى يكاٌ انخاص باألخطاء‬ ‫دسٔط ‪SQL - PL‬‬ ‫78‬
    • ** Commit else dbms_output.put_line(The salary is updated); commit; end if; data base ٍ‫) إرا خشخُا ي‬commit( ‫ٔظٍفت‬ ‫ٌـحـخـفع بدًٍع انخحذٌثاث ٔ انقٍى‬ SQL - PL ‫دسٔط‬ 88
    • ** Rollback exception when my_exp then dbms_output.put_line(The salary is more than 7500); rollback; end; data base ٍ‫) إرا خشخُا ي‬rollback( ‫ٔظٍفت‬ ‫ٌخشاخع عٍ خًٍع انخحذٌثاث ٔ انقٍى‬ SQL - PL ‫دسٔط‬ 89
    • Procedure & Function SQL - PL ‫دسٔط‬ 90
    • ProcedureBeginExceptionEnd ( ; SQL - PL ‫دسٔط‬ 91
    • ProcedureSQL - PL ‫دسٔط‬ 92
    • ProcedureSQL - PL ‫دسٔط‬ 93
    • FunctionBeginExceptionEnd ( ; SQL - PL ‫دسٔط‬ 94
    • ‫‪Function‬‬‫تحدثنا في الشريحة السابقة عن اإلجراءات المخزنة و اآلن نتحدث عن الوظائف المخزنة‬ ‫لكن الفرق أن الوظائف المخزنة ترجع قيمة‬ ‫الصيغة العامة كما يلي :‬ ‫دسٔط ‪SQL - PL‬‬ ‫59‬
    • ً‫ ) ف‬Declare ( ‫ال ٌٕخذ قغى‬) Function ( ٔ )Procedure( SQL - PL ‫دسٔط‬ 96
    • Procedurecreate or replace procedure print_all_emp( p_didemployees.department_id%type)as cursor c is select first_name,last_name,salary from employees where department_id=p_did;begin for v_rec in c loop dbms_output.put_line(v_rec.first_name|| ||v_rec.last_name|| ||v_rec.salary); end loop;end print_all_emp; SQL - PL ‫دسٔط‬ 97
    • create or replace procedure print_all_emp( p_did employees.department_id%type ) SQL - PL ‫دسٔط‬ 98
    • Procedurecreate table circle( id number,r number);create or replace procedure circle_proc (p_id number)is v_r number;begin select r into v_r from circle where id=p_id; dbms_output.put_line(Muhit : ||(2*3.14*v_r)); dbms_output.put_line(Area : ||(v_r*v_r*3.14));exception when no_data_found then dbms_output.put_line(The circle you selectedno exists);end circle_proc; SQL - PL ‫دسٔط‬ 99
    • create or replace procedure circle_proc (p_id number)is v_r number;begin select r into v_r from circle where id=p_id; dbms_output.put_line(‘ Muhit : ||(2*3.14*v_r)); dbms_output.put_line(Area : ||(v_r*v_r*3.14));exception when no_data_found then dbms_output.put_line(The circle you selected no exists);end circle_proc; SQL - PL ‫دسٔط‬ 100
    • Functioncreate or replace function getR(p_id number)return numberis v_r number;begin select r into v_r from circle where id=p_id; return v_r;exception when no_data_found then return 0;end getR; SQL - PL ‫دسٔط‬ 101
    • Procedurecreate or replace procedure circle_proc( p_id number)is v_r number;begin v_r := getR( p_id ); dbms_output.put_line(Muhit : ||(2*3.14*v_r)); dbms_output.put_line(Area : ||(v_r*v_r*3.14));end ; ) Function ( ‫ ) إنى‬v_r ( ‫قًُا بئعُاد قًٍت انًخغٍش اندذٌذ‬ ) Example 30 ( ً‫انغابقت انخً قًُا بخعشٌفٓا ف‬ SQL - PL ‫دسٔط‬ 102
    • Functioncreate or replace function getDid (p_eid number)return numberis v_did number;begin select department_id into v_did from employees where employee_id=p_eid; return v_did;exception when no_data_found then return 0;end getDid; SQL - PL ‫دسٔط‬ 103
    • Procedurecreate or replace procedure updateEmpSal(p_eid number)is v_did number;begin v_did :=getDid(p_eid); if v_did!=0 then if(v_did=50) thenupdate employees set salary=salary*1.5 where employee_id=p_eid; elseupdate employees set salary=salary*1.2 where employee_id=p_eid; end if; else dbms_output.put_line(Employee not found); end if;end updateEmpSal; SQL - PL ‫دسٔط‬ 104
    • ProcedureSQL - PL ‫دسٔط‬ 105
    • ProcedureSQL - PL ‫دسٔط‬ 106
    • ProcedureSQL - PL ‫دسٔط‬ 107
    • SQL - PL ‫دسٔط‬ 108
    • SQL - PL ‫دسٔط‬ 109
    • ‫ذــــُ‬‫تحّذ هللا‬ ‫دسٔط ‪SQL - PL‬‬ ‫011‬