연산자
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 |