연산자
PL/SQL 블록에서는 모든 SQL 연산자를 사용할 수 있으며, 연산자 우선순위는 다음과 같다.
| 연산자 | 설명 |
|---|---|
| ** | 제곱 연산자 |
| +, - | 양수, 음수 식별 연산자 |
| *, / | 곱셈, 나눗셈 |
| +, -, || | 덧셈, 뺄셈, 문자열 연결 연산자 |
| =, <, >, <=, >=, < >, !=, ~=, \^=, IS NULL, LIKE,BETWEEN, IN | 비교 연산자 |
| NOT | 논리 연산자 |
| AND | 논리 연산자 |
| OR | 논리 연산자 |
우선순위가 가장 높은 ‘**’ 연산자는 제곱 연산자를 뜻하는데 PL/SQL에서만 사용할 수 있다. 예를 들어, 2**3는 2의 3제곱을 뜻한다. 다음 익명 블록을 실행해 보자.
입력
DECLARE
a INTEGER := 2**2*3**2;
BEGIN
DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));
END;
결과
a = 36
2**2*3**2에서 ‘**’ 연산자가 우선순위가 있으므로, 풀어 쓰면 (2^2^*3^2^) = (4*9) = 36이 된 것이다.
[표 8-2]에서 두 값이 같지 않음을 나타내는 비동등 연산자 ‘< >’, ‘!=’, ‘~=’, ‘\^=’ 네 가지 모두를 사용할 수 있다는 점을 알아두자.
AND, OR, NOT 논리 연산자는 그 값에 따라 반환하는 연산 결과를 정리해 보면 다음과 같다.
| x | y | x AND y | x OR y | NOT x |
|---|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE | FALSE |
| TRUE | FALSE | FALSE | TRUE | FALSE |
| TRUE | NULL | NULL | TRUE | FALSE |
| FALSE | TRUE | FALSE | TRUE | TRUE |
| FALSE | FALSE | FALSE | FALSE | TRUE |
| FALSE | NULL | FALSE | NULL | TRUE |
| NULL | TRUE | NULL | TRUE | NULL |
| NULL | FALSE | FALSE | NULL | NULL |
| NULL | NULL | NULL | NULL | NULL |