آموزش PL/SQL قسمت سوم – عملگرهای PL/SQL

کامپایلر زبان PL/SQL با توجه به نوع عملگر استفاده شده در برنامه، عملیات خاصی را بر روی داده ها انجام می دهد. عملگرها به 5 دسته تقسیم می شوند که در ادامه هر کدام را با مثال توضیح می دهیم.

1.عملگرهای ریاضی

2.عملگرهای رابطه ای

3.عملگرهای مقایسه ای

4.عملگرهای منطقی

5.عملگرهای رشته ای

 

عملگرهای ریاضی

در جدول زیر متغیر A برابر با 10 و متغیر B برابر 5 است.

مثال:

BEGIN

      dbms_output.put_line( 10 + 5);

      dbms_output.put_line( 10 – 5);

      dbms_output.put_line( 10 * 5);

      dbms_output.put_line( 10 / 5);

      dbms_output.put_line( 10 ** 5);

END;

/

خروجی

15

5

50

2

100000

PL/SQL procedure successfully completed.

 

عملگرهای رابطه ای

عملگرهای رابطه ای دو عبارت را مقایسه می کنند و یک مقدار BOOLEAN(مقدار TRUE یا FALSE) برمی گردانند. در جدول زیر عملگرهای رابطه ای را می بینید. فرض کنید عملوند A برابر 10 و عملوند B برابر با 20 است.

مثال:

DECLARE

      a number (2) := 21;

      b number (2) := 10;

BEGIN

      IF (a = b) then

            dbms_output.put_line(‘Line 1 – a is equal to b’);

      ELSE

            dbms_output.put_line(‘Line 1 – a is not equal to b’);

      END IF;

      IF (a < b) then

            dbms_output.put_line(‘Line 2 – a is less than b’);

      ELSE

            dbms_output.put_line(‘Line 2 – a is not less than b’);

      END IF;

      IF ( a > b ) THEN

            dbms_output.put_line(‘Line 3 – a is greater than b’);

      ELSE

            dbms_output.put_line(‘Line 3 – a is not greater than b’);

      END IF;

      — Lets change value of a and b

      a := 5;

      b := 20;

      IF ( a <= b ) THEN

            dbms_output.put_line(‘Line 4 – a is either equal or less than b’);

      END IF;

      IF ( b >= a ) THEN

            dbms_output.put_line(‘Line 5 – b is either equal or greater than a’);

      END IF;

      IF ( a <> b ) THEN

            dbms_output.put_line(‘Line 6 – a is not equal to b’);

      ELSE

            dbms_output.put_line(‘Line 6 – a is equal to b’);

      END IF;

END;

خروجی

Line 1 – a is not equal to b

Line 2 – a is not less than b

Line 3 – a is greater than b

Line 4 – a is either equal or less than b

Line 5 – b is either equal or greater than a

Line 6 – a is not equal to b

PL/SQL procedure successfully completed

 

عملگرهای مقایسه ای

وقتی از عملگرهای مقایسه ای استفاده می شود نتیجه TRUE ، FALSE یا NULL است.

مثال از  LIKE

DECLARE

      PROCEDURE compare (value varchar2, pattern varchar2 ) is

      BEGIN

            IF value LIKE pattern THEN

                  dbms_output.put_line (‘True’);

            ELSE

                  dbms_output.put_line (‘False’);

            END IF;

      END;

BEGIN

      compare(‘Zara Ali’, ‘Z%A_i’);

      compare(‘Nuha Ali’, ‘Z%A_i’);

END;

/

خروجی برنامه:

True

False

PL/SQL procedure successfully completed.

مثال از  BETWEEN

DECLARE

      x number(2) := 10;

BEGIN

      IF (x between 5 and 20) THEN

            dbms_output.put_line(‘True’);

      ELSE

            dbms_output.put_line(‘False’);

      END IF;

      IF (x BETWEEN 5 AND 10) THEN

            dbms_output.put_line(‘True’);

      ELSE

             dbms_output.put_line(‘False’);

      END IF;

       IF (x BETWEEN 11 AND 20) THEN

             dbms_output.put_line(‘True’);

      ELSE

            dbms_output.put_line(‘False’);

     END IF;

END;

/

خروجی برنامه:

True

True

False

PL/SQL procedure successfully completed.

مثالی از  IN و IS NULL

DECLARE

letter varchar2(1) := ‘m’;

BEGIN

IF (letter in (‘a’, ‘b’, ‘c’)) THEN

dbms_output.put_line(‘True’);

ELSE

dbms_output.put_line(‘False’);

END IF;

IF (letter in (‘m’, ‘n’, ‘o’)) THEN

dbms_output.put_line(‘True’);

ELSE

dbms_output.put_line(‘False’);

END IF;

IF (letter is null) THEN

dbms_output.put_line(‘True’);

ELSE

dbms_output.put_line(‘False’);

END IF;

END;

/

خروجی برنامه:

False

True

False

PL/SQL procedure successfully completed.

 

عملگرهای منطقی

در جدول زیر عملگرهای منطقی را می بینید. این عملگرها روی مقدارهای BOOLEAN عمل می کنند و نتیجه آنها نیز TRUE یا FALSE است. فرض کنید متغیر A برابر با TRUE و B برابر با FALSE است.

مثال:

DECLARE

a boolean := true;

b boolean := false;

BEGIN

IF (a AND b) THEN

dbms_output.put_line(‘Line 1 – Condition is true’);

END IF;

IF (a OR b) THEN

dbms_output.put_line(‘Line 2 – Condition is true’);

END IF;

IF (NOT a) THEN

dbms_output.put_line(‘Line 3 – a is not true’);

ELSE

dbms_output.put_line(‘Line 3 – a is true’);

END IF;

IF (NOT b) THEN

dbms_output.put_line(‘Line 4 – b is not true’);

ELSE

dbms_output.put_line(‘Line 4 – b is true’);

END IF

END;

/

خروجی برنامه:

Line 2 – Condition is true

Line 3 – a is true

Line 4 – b is not true

PL/SQL procedure successfully completed.

 

اولویت عملگرها

در جدول زیر عملگرهای با اولویت بالاتر در سطرهای بالا قرار دارند. برای مثال اگر در یک برنامه x=7+3*2 باشد مقدار x برابر با 13 است زیرا عملگر ضرب (سطر سوم) به نسبت جمع(سطر چهارم) اولویت بالاتر دارد.

مثال:

DECLARE

a number(2) := 20;

b number(2) := 10;

c number(2) := 15;

d number(2) := 5;

e number(2) ;

BEGIN

e := (a + b) * c / d; — ( 30 * 15 ) / 5

dbms_output.put_line(‘Value of (a + b) * c / d is : ‘|| e );

e := ((a + b) * c) / d; — (30 * 15 ) / 5

dbms_output.put_line(‘Value of ((a + b) * c) / d is : ‘ || e );

e := (a + b) * (c / d); — (30) * (15/5)

dbms_output.put_line(‘Value of (a + b) * (c / d) is : ‘|| e );

e := a + (b * c) / d; — 20 + (150/5)

dbms_output.put_line(‘Value of a + (b * c) / d is : ‘ || e );

END;

/

خروجی برنامه:

Value of (a + b) * c / d is : 90

Value of ((a + b) * c) / d is : 90

Value of (a + b) * (c / d) is : 90

Value of a + (b * c) / d is : 50

PL/SQL procedure successfully completed.

 

Comments (2)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.