کامپایلر زبان 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.
سپاس از شما
عالی…..