boykap.files.wordpress.com€¦ · web...

24
คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคค (Condition Statement) คคคคคคคคคคคคคคคคคคคคคคคคค (Loop Statement) คคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคค คคคคคคคค (Application Program) คคคค PL/SQL คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคค คคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคค PL/SQL คคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคค คคคค PL/SQL คคคคคคคคคคคคค Condition Statement คค คคคคคคคคคคค PL/SQL คคคคคค PL/SQL คคคคคคคคคคคคคคคคคคคค คคคคคคคค (Condition Statement) คคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคค คคคคคคคค (Condition) คคคคคคคคค Boolean คคคค

Upload: others

Post on 02-Nov-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

คำ�สัง่ตรวจเชค็เง่ือนไขและคำ�สัง่ควบคมุก�รวนซำ��

ก�รใชค้ำ�สัง่ตรวจเชค็เง่ือนไขและคำ�สัง่ควบคมุก�รวนซำ��

คำ�สัง่ตรวจเชค็เง่ือนไข (Condition Statement) และคำ�

สัง่ควบคมุก�รวนซำ�� (Loop Statement) จดัเป็นลักษณะท่ี

สำ�คัญของภ�ษ�คอมพวิเตอรท์ัว่ๆไป ท่ีใชใ้นก�รสร�้งโปรแกรม

ประยุกต์ (Application Program) ภ�ษ� PL/SQL ถกูสร�้งขึ�น

ม�เพื่อเขยีนโปรแกรมจดัก�รง�นต่�งๆในระบบฐ�นขอ้มูล และใชใ้น

ก�รสร�้งโปรแกรมประยุกต์ ดังนั�นในก�รศึกษ�ก�รเขยีนโปรแกรม

ด้วยภ�ษ� PL/SQL บทนี�จะกล่�วถึงรูปแบบของคำ�สัง่ตรวจเชค็

เง่ือนไขและคำ�สัง่ควบคมุก�รวนซำ��ของ ภ�ษ� PL/SQL

ก�รใชค้ำ�สัง่ Condition Statement ในโปรแกรมภ�ษ� PL/SQL

  ในภ�ษ� PL/SQL จะใชค้ำ�สัง่ตรวจเชค็เง่ือนไข (Condition Statement) ใชใ้นก�รตรวจเชค็เง่ือนไขท่ีกำ�หนดไว ้เพื่อตัดสนิใจว่�

โปรแกรมจะเลือกคำ�สัง่หรอืชุดคำ�สัง่ใดม�ทำ�ง�นใหต้รงจุดประสงค์

ของโปรแกรม โดยเง่ือนไข (Condition) คือตัวแปร Boolean หรอื expression ท่ีได้ผลลัพธเ์ป็นค่� Boolean ในบทนี�จะแบง่คำ�

สัง่ตรวจเชค็เง่ือนไข ออกเป็น 4 แบบ โดยมรูีปแบบคำ�สัง่เป็นดังต่อ

ไปนี� 

1.คำ�สัง่ตรวจเชค็เง่ือนไข IF- THEN Statement

Page 2: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ก�รตรวจเชค็เง่ือนไขประโยคเดียวเป็นก�รตรวจสอบเง่ือนไขว�่เป็นจรงิหรอืเท็จ แล้วใหท้ำ�ชุดคำ�สัง่นั�นๆถ้�เง่ือนไขนั�นเป็นจรงิ

รูปแบบคำ�สัง่ IF-THEN ในโปรแกรมภ�ษ� PL/SQL:

BEGIN IF condition THEN {...statements to execute when condition is TRUE...} END IF;END;

ตัวอย�่งท่ี 1 ก�รใชค้ำ�สัง่ IF-THEN ในโปรแกรมภ�ษ� PL/SQL:DECLARE a NUMBER :=10;BEGIN

dbms_output.put_line('Program started.' );IF( a > 100 ) THEN

dbms_output.put_line('a is greater than 100'); END IF;dbms_output.put_line('Program completed.');

END;

Page 3: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ตัวอย�่งท่ี 2 ก�รใชค้ำ�สัง่ IF-THEN ในโปรแกรมภ�ษ� PL/SQL:

ในตัวอย�่งนี� ต้องก�รท่ีจะแสดงขอ้คว�มว�่ 'The character is in English Vowels' เมื่อตัวอักษรท่ีรบัขอ้มูลจ�ก user ม�นั�นเป็นสระในภ�ษ�อังกฤษ (A, E, I, O, U)

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE a CHAR(1) := '& character';BEGIN IF UPPER(a) in ('A','E','I','O','U' ) THEN dbms_output.put_line('The character is in English Vowels'); END IF;END;

หม�ยเหต:ุ ในกรณีท่ีเง่ือนไขที่ทำ�ก�รตรวจสอบนั�นเป็นตัวอักษรหรอื Data/Time Format จะต้องเขยีนใหอ้ยูภ่�ยใต้เครื่องหม�ย ‘ ’

2.คำ�สัง่ตรวจเชค็เง่ือนไข IF-THEN-ELSE Statement

ก�รตรวจเชค็เง่ือนไข IF-THEN-ELSE เป็นก�รตรวจสอบว�่ ห�กเง่ือนไขท่ีใชใ้นก�รตรวจเชค็เป็นจรงิ ก็จะดำ�เนินก�รกับชุดคำ�สัง่ท่ีกำ�หนดไว ้และห�กเง่ือนไขเป็นเท็จ ก็จะดำ�เนินก�รกับชุดคำ�สัง่หลังประโยค else

Page 4: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

รูปแบบคำ�สัง่ IF-THEN-ELSE ในโปรแกรมภ�ษ� PL/SQL:

BEGIN IF condition THEN {...statements to execute when condition is TRUE...}

ELSE {...statements to execute when condition is FALSE...}

END IF;END;

ตัวอย�่งท่ี 3 ก�รใชค้ำ�สัง่ IF-THEN-ELSE ในโปรแกรมภ�ษ� PL/SQL:

ในตัวอย�่งนี� ต้องก�รท่ีจะแสดงขอ้คว�มว�่ 'a is even number' เมื่อตัวเลขท่ีรบัขอ้มูลจ�ก user ม�นั�นเป็นเลขคู่ และจะแสดงขอ้คว�มว�่ 'a is odd number'เมื่อตัวเลขท่ีรบัขอ้มูลจ�ก user ม�นั�นเป็นเลขค่ี

Page 5: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE a NUMBER := &Number;BEGINdbms_output.put_line ('Program started'); IF( mod(a,2)=0) THEN dbms_output.put_line('a is even number' ); ELSE dbms_output.put_line('a is odd number'); END IF;dbms_output.put_line ('Program completed.');END;

3.คำ�สัง่ตรวจเชค็เง่ือนไข IF-THEN-ELSIF Statementก�รตรวจเชค็เง่ือนไข IF-THEN-ELSEIF จะใชใ้นกรณีท่ี

ต้องก�รเลือกจ�กท�งเลือกม�กว�่ 2 ท�งเลือก โดยใชผ้ลก�รตรวจสอบเง่ือนไขท่ีแตกต่�งกัน โดยส�ม�รถเขยีนโครงสร�้ง elseif ได้

Page 6: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ดังนี�

รูปแบบคำ�สัง่ IF-THEN-ELSIF ในโปรแกรมภ�ษ� PL/SQL:

BEGIN IF condition1 THEN {...statements to execute when condition1 is TRUE...}

ELSIF condition2 THEN {...statements to execute when condition2 is TRUE...}

END IF;END;

ตัวอย�่งท่ี 4 ก�รใชค้ำ�สัง่ IF-THEN-ELSIF ในโปรแกรมภ�ษ� PL/SQL:

Page 7: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ตัวอย�่งนี� จะเป็นก�รเขยีนโปรแกรมตัดเกรด โดยรบัค่�คะแนนจ�ก

user ม�ทำ�ก�รตรวจสอบเง่ือนไข โดยเง่ือนไขท่ีใชใ้นก�รตรวจสอบมี

ดังต่อไปนี�

คะแนน >= 70 Grade A. คะแนน >=40 and คะแนน <70 Grade B. คะแนน >=35 and คะแนน < 40 Grade C.

โดยท่ีไมม่คีำ�สัง่ ELSE หลังจ�กก�รตรวจสอบเง่ือนไขเสรจ็

สิ�น นัน่หม�ยคว�มว�่ ถ้�ก�รตรวจสอบเง่ือนไขใหผ้ลเป็นเท็จ

(False) ก็จะสิ�นสดุก�รทำ�ง�นของ

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE mark NUMBER := &score;BEGINdbms_output.put_line('Program started. ' ); IF( mark >= 70) THEN dbms_output.put_line('Grade A'); ELSIF(mark >= 40 AND mark < 70) THEN dbms_output.put_line('Grade B'); ELSIF(mark >=35 AND mark < 40) THEN dbms_output.put_line('Grade C'); END IF;dbms_output.put_line('Program completed.'); END;

4.คำ�สัง่ตรวจเชค็เง่ือนไข IF-THEN-ELSIF-ELSE Statement

คำ�สัง่ IF-THEN-ELSEIF-ELSE จะใชเ้มื่อต้องก�รตรวจสอบเง่ือนไขหล�ยเง่ือนไข และจะทำ�คำ�สัง่ท่ีต้องก�รถ้�เง่ือนไขนั�นแรกเป็น

Page 8: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

จรงิ หรอืทำ�อีกชุดคำ�สัง่ถ้�เง่ือนไขอีกเง่ือนไขอีกเง่ือนไขเป็นจรงิ และจะใหท้ำ�อีกชุดคำ�สัง่ถ้�เง่ือนไขทั�งหมดที่มนัี�นเป็นเท็จในขั�นตอนสดุท้�ยของก�รตรวจสอบเง่ือนไข

รูปแบบคำ�สัง่ IF-THEN-ELSIF-ELSE ในโปรแกรมภ�ษ� PL/SQL:

BEGIN IF condition1 THEN {...statements to execute when condition1 is TRUE...} ELSIF condition2 THEN {...statements to execute when condition2 is TRUE...} ELSE {...statements to execute when both condition1 and condition2 are FALSE...}END IF;END;

Page 9: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ตัวอย�่งท่ี 5 ก�รใชค้ำ�สัง่ IF-THEN-ELSIF-ELSE ในโปรแกรมภ�ษ� PL/SQL:

ตัวอย�่งนี�จะเป็นก�รเขยีนโปรแกรมตัดเกรด โดยรบัค่�คะแนนจ�ก

user ม�ทำ�ก�รตรวจสอบเง่ือนไข โดยเง่ือนไขเชน่เดียวกันกับ

ตัวอย�่งท่ีผ่�นม� โดยท่ีหลังจ�กก�รตรวจสอบเง่ือนไขที่มอียูทั่�งหมด

เสรจ็สิ�น แล้วไมม่เีง่ือนไขใดตรงกับเง่ือนไขท่ีกำ�หนดไวซ้ึ่งใหผ้ลท่ีได้จะ

เป็นเท็จ (False) จะใหโ้ปรแกรมแสดงขอ้คว�มว�่ 'No Grade'ขึ�นม�

บนหน้�จอ

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE mark NUMBER := &score;BEGINdbms_output.put_line('Program started.'); IF( mark >= 70) THEN dbms_output.put_line('Grade A'); ELSIF(mark >= 40 AND mark < 70) THEN dbms_output.put_line('Grade B'); ELSIF(mark >=35 AND mark < 40) THEN dbms_output.put_line('Grade C'); ELSE dbms_output.put_line('No Grade'); END IF;dbms_output.put_line('Program completed.' ); END;

ก�รใชค้ำ�สัง่ NESTED-IF Statement ในโปรแกรมภ�ษ� PL/SQL

Page 10: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

เป็นก�รสร�้งรูปแบบเง่ือนไขท่ีซบัซอ้นยิง่ขึ�นโดยจะมกี�รตรวจสอบเง่ือนไขซอ้นยอ่ยลงไปอีก ซึ่งก�รสร�้งประโยคซอ้นเง่ือนไขดังกล่�วจำ�เป็นต้องตรวจสอบใหร้อบคอบมฉิะนั�นอ�จเกิดผลลัพธท่ี์ผิดพล�ดได้ โครงสร�้งของก�รใชค้ำ�สัง่ตรวจเชค็เง่ือนไขแบบซอ้นจะมีโครงสร�้งดังนี�

รูปแบบคำ�สัง่ NESTED-IF Statement ในโปรแกรมภ�ษ� PL/SQL:

BEGIN IF <condition1> THEN —executed only if the condition returns TRUE <action block1 starts>

IF <condition2> THEN<action_block2>

END IF; —END IF corresponds to condition2 <action_blockl ends> END IF; —END IF corresponds to condition1END;

ก�รตรวจสอบเง่ือนไขท่ีซอ้นอยูใ่นเง่ือนไขอีกชั�น

Page 11: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ตัวอย�่งท่ี 6 ก�รใชค้ำ�สัง่ Nested- If Statement ในโปรแกรมภ�ษ� PL/SQL:

ตัวอย�่งนี�จะเป็นก�รตรวจสอบเง่ือนไขของตัวเลข 3 ตัว ท่ีได้เก็บไวใ้นตัวแปร a,b,c โดยใชค้ำ�สัง่ Nested-If เพื่อแสดงค่�ที่มค่ี�ม�กท่ีสดุของตัวเลขทั�ง 3 ตัวนี�ออกม�

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE a NUMBER :=10; b NUMBER :=15; c NUMBER :=20;BEGINdbms_output.put_line('Program started.' );IF( a > b)THEN /*Nested-if l */

dbms_output.put_line('Checking Nested-IF 1'); IF( a > c ) THEN dbms_output.put_line('A is greatest'); ELSE dbms_output.put_line('C is greatest'); END IF;

ELSE /*Nested-if2 */dbms_output.put_line('Checking Nested-IF 2' );

IF( b > c ) THEN dbms_output.put_lme('B is greatest' ); ELSE dbms_output.put_lme('C is greatest' ); END IF;

END IF;dbms_output.put_line('Program completed. ' );END;

ก�รใชค้ำ�สัง่ CASE Statement ในโปรแกรมภ�ษ� PL/SQL

Page 12: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ก�รเขยีนโปรแกรมเพื่อตรวจเชค็เง่ือนไขที่ซบัซอ้น จะทำ�ได้โดยใชค้ำ�สัง่ IF-THEN-ELSIF-ELSE หรอืใชค้ำ�สัง่ Nested- If ต�มท่ีกล่�วม� ในหวัขอ้นี�จะแนะนำ�คำ�สัง่ CASE ซึ่งเป็นอีกท�งเลือกของก�รใชค้ำ�สัง่เพื่อตรวจเชค็เง่ือนไขที่ซบัซอ้น บ�งสถ�นก�รณ์คำ�สัง่ CASE จะชว่ยใหก้�รตรวจเชค็เง่ือนไขที่ซบัซอ้นจะทำ�ได้สะดวกกว�่ก�รใชค้ำ�สัง่ IF-THEN-ELSIF-ELSE หรอืใชค้ำ�สัง่ Nested- If โครงสร�้งของก�รใชค้ำ�สัง่ตรวจเชค็เง่ือนไขแบบ CASE จะมีโครงสร�้งดังนี�

รูปแบบคำ�สัง่ CASE Statement ในโปรแกรมภ�ษ� PL/SQL:

BEGIN CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2;

Page 13: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;END;

ตัวอย�่งท่ี 7 ก�รใชค้ำ�สัง่ CASE Statement ในโปรแกรมภ�ษ� PL/SQL:

ตัวอย�่งนี�จะเป็นก�รคำ�นวนท�งคณิตศ�สตร ์ระหว�่งตัวเลข 2 ตัว คือ 55 และ 5 โดยใชค้ำ�สัง่ Case

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY';

BEGINdbms_output.put_line('Program started.' );

CASE (arth_operation)WHEN 'ADD' THEN dbms_output.put_line('Addition of

the numbers are: '|| a+b );WHEN 'SUBTRACT' THEN

dbms_output.put_line('Subtraction of the numbers are: '|| a-b );

WHEN 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b);

WHEN 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are:'|| a/b);

ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE;dbms_output.put_line('Program completed.' );END;

คำ�สัง่ควบคมุก�รวนซำ�� (Loop Statement) ในโปรแกรมภ�ษ� PL/SQL

Page 14: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

คำ�สัง่ควบคมุก�รวนซำ�� (Loop Statement) ใชใ้นก�ร

ควบคมุใหก้�รทำ�ง�นของคำ�สัง่หรอืชุดคำ�สัง่ ชุดใดชุดหน่ึงทำ�ง�น

ต�มจำ�นวนรอบที่กำ�หนดไว ้หรอื ทำ�ซำ��จนกระทั�งเง่ือนไขท่ีควบคมุ

ก�รทำ�ง�นซำ��เปล่ียนแปลงค่� คำ�สัง่ควบคมุก�รวนซำ��ใน PL/SQL จำ�แนกได้ 3 รูปแบบ

คำ�สัง่ Basic Loop คำ�สัง่ FOR Loop คำ�สัง่ WHILE Loop

คำ�สัง่ Basic Loop ในโปรแกรมภ�ษ� PL/SQL

คำ�สัง่ Basic Loop เป็นก�รวนซำ��ไปเรื่อย ๆ ไมม่กีำ�หนด

จนกว�่เง่ือนไขภ�ยใน Loop เป็นจรงิ แล้วค่อยออกจ�ก Loop โครงสร�้งของก�รใชค้ำ�สัง่ควบคมุก�รวนซำ��แบบ Basic Loop เป็น

ดังนี�

Page 15: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

รูปแบบท่ี 1 คำ�สัง่ LOOP Statement ในโปรแกรมภ�ษ� PL/SQL:

BEGIN LOOP   sequence_of_statements; END LOOP;END;

รูปแบบท่ี 2 คำ�สัง่ LOOP Statement ท่ีม ีEXIT ในโปรแกรมภ�ษ� PL/SQL:

BEGIN LOOP ... EXIT; END LOOP;

Page 16: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

END;

 

รูปแบบท่ี 3 คำ�สัง่ LOOP Statement ท่ีจะ EXIT เมื่อเง่ือนไขท่ีใชใ้นก�รตรวจสอบเป็นจรงิ

BEGIN LOOP ... EXIT WHEN condition; END LOOP;END;

ตัวอย�่งคำ�สัง่ LOOP with EXIT Statement ในโปรแกรมภ�ษ� PL/SQL:

ทำ�ก�รประก�ศตัวแปรชึ�นม� 1 ตัวเพื่อทำ�หน้�ท่ีเป็น counter ภ�ยใน loop จะทำ�ก�รเพิม่ค่�ใหก้ับตัวแปร counter ทีละ 1 ค่� และแสดงค่�ตัวแปร counter ออกม� จ�กนั�นทำ�ก�รตรวจสอบเง่ือนไขว�่ตัวแปร counter ว�่มค่ี�เท่�กับ 5 หรอืไม ่ถ้�เง่ือนไขเป็นจรงิจะออกจ�กคำ�สัง่ก�รวนซำ��

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:DECLARE n_counter NUMBER := 0;BEGIN  LOOP    n_counter := n_counter + 1;    DBMS_OUTPUT.PUT_LINE(n_counter);    IF n_counter = 5 THEN      EXIT;    END IF;  END LOOP;

Page 17: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

END;

ตัวอย�่งคำ�สัง่ LOOP with EXIT-WHEN Statement ในโปรแกรมภ�ษ� PL/SQL:

เป็นก�รเขยีนโปรแกรมเพื่อแสดงค่�ของตัวแปร counter เชน่เดียวกับตัวอย่�งก่อนหน้� แต่ตัวอย่�งนี�จะไมม่กี�รใชค้ำ�สัง่ if statement เพื่อทำ�ก�รตรวจสอบเง่ือนไขของค่�ตัวแปร counter แต่จะใชค้ำ�สัง่ WHEN และเง่ือนไขในก�รตรวจสอบเพื่อออกจ�กก�รวนซำ�� หลังคำ�สัง่ EXIT

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE n_counter NUMBER := 0;BEGIN  LOOP    n_counter := n_counter + 1;    DBMS_OUTPUT.PUT_LINE(n_counter);    EXIT WHEN n_counter = 5;  END LOOP;END;

คำ�สัง่ FOR Loop ในโปรแกรมภ�ษ� PL/SQL

คำ�สัง่ FOR Loop เป็นก�รวน Loop ท่ีทร�บจำ�นวนครั�งในก�ร

ทำ�ง�นที่แน่นอน โดย

โครงสร�้งของคำ�สัง่ FOR Loop จะมโีครงสร�้งดังต่อไปนี�

Page 18: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

รูปแบบคำ�สัง่ FOR LOOP Statement ในโปรแกรมภ�ษ� PL/SQL:

BEGIN

FOR i IN [REVERSE] lower_bound .. upper_bound LOOP

   sequence_of_statements;

END LOOP;

END;

หม�ยเหต ุ:- [REVERSE] ใชส้ำ�หรบัวน loop แบบยอ้นหลัง จ�ก

upper_bound ลดลงทีละ 1 ไปเรื่อยๆ จนถึง lower_bound- ไมต้่องประก�ศตัวแปร index ใหตั้�งชื่อตัวแปรท่ีทำ�หน้�ท่ีเป็น

index ได้เลย และโปรแกรมจะรูจ้กัตัวแปรท่ีเป็น index ภ�ยใน loop เท่�นั�น

ตัวอย�่งคำ�สัง่ FOR LOOP Statement – upward iteration ในโปรแกรมภ�ษ� PL/SQL:

Page 19: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

เป็นก�รแสดงค่� 1 ถึง 10 โดยใชค้ำ�สัง่ FOR loop ในก�รแสดงผลลัพธ์

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE  n_times NUMBER := 10;BEGIN  FOR n_i IN 1..n_times LOOP    DBMS_OUTPUT.PUT_LINE(n_i);  END LOOP;END;

ตัวอย�่งคำ�สัง่ FOR LOOP Statement – downward iteration ในโปรแกรมภ�ษ� PL/SQL:

ในตัวอย�่งนี� จะมกี�รเรยีกใชค้ำ�สัง่ REVERSE แสดงค่� 10 ถึง 1

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:

DECLARE  n_times NUMBER := 10;BEGIN  FOR n_i IN REVERSE 1..n_times LOOP    DBMS_OUTPUT.PUT_LINE(n_i);  END LOOP;END;

คำ�สัง่ WHILE Loop ในโปรแกรมภ�ษ� PL/SQL

เป็นก�รวน Loop ต�มเง่ือนไข โปรแกรมจะทำ�ก�รเชค็เง่ือนไข

ก่อน ตร�บใดท่ีเง่ือนไขได้ผลลัพธเ์ป็น TRUE จะทำ�ง�นต�ม Loop ดังนั�น Loop ชนิดนี�อ�จไมถ่กูทำ�ง�นเลยก็ได้ถ้�ก�รเชค็เง่ือนไขใน

ครั�งแรกไมไ่ด้ผลเป็น TRUE ซึ่งมโีครงสร�้งดังต่อไปนี�

Page 20: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

รูปแบบคำ�สัง่ WHILE LOOP Statement ในโปรแกรมภ�ษ� PL/SQL:

DECLARE

  counter  BEGIN

WHILE condition LOOP

   sequence_of_statements;

add counter

END LOOP;

END;

ตัวอย�่งคำ�สัง่ WHILE LOOP Statement ในโปรแกรมภ�ษ� PL/SQL:

Page 21: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

ในตัวอย�่งนี� จะเป็นก�รคำ�นวณห�ค่� 10! (Factorial of 10) โดยเรยีกใชค้ำ�สัง่ WHILE LOOP

คำ�สัง่โปรแกรมภ�ษ� PL/SQL:DECLARE  n_counter   NUMBER := 10;  n_factorial NUMBER := 1;  n_temp      NUMBER;BEGIN  n_temp := n_counter;  WHILE n_counter > 0  LOOP    n_factorial := n_factorial * n_counter;    n_counter   := n_counter - 1;  END LOOP;   DBMS_OUTPUT.PUT_LINE('factorial of ' || n_temp ||                       ' is ' || n_factorial);END;

แบบฝึกหัด

ใหนิ้สติเขยีนโปรแกรมแสดงสตูรคณู โดยใหร้บัค่�จ�ก user ว�่ต้องก�รแมส่ตูรคณูใด ซึ่งผลลัพธท์ี่ต้องก�รดังนี�

Input number: 5Multiplication table5x1 = 55x2 = 105x3 = 155x4 = 205x5 = 255x6 = 305x7 = 355x8 = 405x9 = 455x10 = 50

Page 22: boykap.files.wordpress.com€¦ · Web viewคำสั่งตรวจเช็คเงื่อนไขและคำสั่งควบคุมการวนซ้ำ

5x11 = 555x12 = 60