The PL/SQL compiler determines the datatype of an expression from the types of the variables, constants, literals, and operators that comprise the expression. Every time the expression is evaluated, a single value of that type results. For more information, see "PL/SQL Expressions and Comparisons".
other boolean form ::=
character expression ::=
numeric subexpression ::=
date expression ::=
numeric expression ::=
This comparison operator tests whether a value lies in a specified range. It means: greater than or equal to low value and less than or equal to high value.
A constant of type
BOOLEAN, which must be initialized to the value
NULL. Arithmetic operations on Boolean constants are not allowed.
An expression that returns the Boolean value
Any function call that returns a Boolean value.
The predefined values
NULL (which stands for a missing, unknown, or inapplicable value). You cannot insert the value
FALSE into a database column.
A variable of type
BOOLEAN. Only the values
NULL can be assigned to a
BOOLEAN variable. You cannot select or fetch column values into a
BOOLEAN variable. Also, arithmetic operations on
BOOLEAN variables are not allowed.
Designed for use with the
FORALL statement, this is a composite attribute of the implicit cursor
SQL. For more information, see "SQL Cursor".
A previously declared constant that stores a character value. It must be initialized to a character value or a value implicitly convertible to a character value.
An expression that returns a character or character string.
A function call that returns a character value or a value implicitly convertible to a character value.
A literal that represents a character value or a value implicitly convertible to a character value.
A previously declared variable that stores a character value.
A collection (nested table, index-by table, or varray) previously declared within the current scope.
An explicit cursor previously declared within the current scope.
A PL/SQL cursor variable previously declared within the current scope.
A previously declared constant that stores a date value. It must be initialized to a date value or a value implicitly convertible to a date value.
An expression that returns a date/time value.
A function call that returns a date value or a value implicitly convertible to a date value.
A literal representing a date value or a value implicitly convertible to a date value.
A previously declared variable that stores a date value.
EXISTS, COUNT, FIRST, LAST, LIMIT, NEXT, PRIOR
Collection methods. When appended to the name of a collection, these methods return useful information. For example,
TRUE if the
nth element of a collection exists. Otherwise,
FALSE. For more information, see "Collection Methods".
An expression that must return a numeric value.
%FOUND, %ISOPEN, %NOTFOUND, %ROWCOUNT
Cursor attributes. When appended to the name of a cursor or cursor variable, these attributes return useful information about the execution of a multi-row query. You can also append them to the implicit cursor
A cursor variable declared in a PL/SQL host environment and passed to PL/SQL as a bind variable. Host cursor variables must be prefixed with a colon.
A variable declared in a PL/SQL host environment and passed to PL/SQL as a bind variable. The datatype of the host variable must be implicitly convertible to the appropriate PL/SQL datatype. Also, host variables must be prefixed with a colon.
Comparison operator that tests set membership. It means: equal to any member of. The set can contain nulls, but they are ignored. Also, expressions of the form
value NOT IN set
FALSE if the set contains a null.
A numeric expression that must return a value of type
PLS_INTEGER, or a value implicitly convertible to that datatype.
An indicator variable declared in a PL/SQL host environment and passed to PL/SQL. Indicator variables must be prefixed with a colon. An indicator variable indicates the value or condition of its associated host variable. For example, in the Oracle Precompiler environment, indicator variables can detect nulls or truncated values in output host variables.
Comparison operator that returns the Boolean value
TRUE if its operand is null, or
FALSE if its operand is not null.
Comparison operator that compares a character value to a pattern. Case is significant.
LIKE returns the Boolean value
TRUE if the character patterns match, or
FALSE if they do not match.
NOT, AND, OR
Logical operators, which follow the tri-state logic of Table 2-3.
AND returns the value
TRUE only if both its operands are true.
OR returns the value
TRUE if either of its operands is true.
NOT returns the opposite value (logical negation) of its operand. For more information, see "Logical Operators".
Keyword that represents a null. It stands for a missing, unknown, or inapplicable value. When
NULL is used in a numeric or date expression, the result is a null.
A previously declared constant that stores a numeric value. It must be initialized to a numeric value or a value implicitly convertible to a numeric value.
An expression that returns an integer or real value.
A function call that returns a numeric value or a value implicitly convertible to a numeric value.
A literal that represents a number or a value implicitly convertible to a number.
A previously declared variable that stores a numeric value.
A character string compared by the
LIKE operator to a specified string value. It can include two special-purpose characters called wildcards. An underscore (_) matches exactly one character; a percent sign (%) matches zero or more characters. The pattern can be followed by
', which turns off wildcard expansion wherever the escape character appears in the string followed by a percent sign or underscore.
Operator that compares expressions. For the meaning of each operator, see "Comparison Operators".
A cursor opened implicitly by Oracle to process a SQL data manipulation statement. The implicit cursor
SQL always refers to the most recently executed SQL statement.
+, -, /, *, **
Symbols for the addition, subtraction, division, multiplication, and exponentiation operators.
The concatenation operator. As the following example shows, the result of concatenating string1 with string2 is a character string that contains string1 followed by string2:
'Good' || ' morning!' = 'Good morning!'
The next example shows that nulls have no effect on the result of a concatenation:
'suit' || NULL || 'case' = 'suitcase'
A null string (
''), which is zero characters in length, is treated like a null.
In a Boolean expression, you can only compare values that have compatible datatypes. For more information, see "Converting PL/SQL Datatypes".
In conditional control statements, if a Boolean expression returns
TRUE, its associated sequence of statements is executed. But, if the expression returns
NULL, its associated sequence of statements is not executed.
The relational operators can be applied to operands of type
BOOLEAN. By definition,
TRUE is greater than
FALSE. Comparisons involving nulls always return a null. The value of a Boolean expression can be assigned only to Boolean variables, not to host variables or database columns. Also, datatype conversion to or from type
BOOLEAN is not supported.
You can use the addition and subtraction operators to increment or decrement a date value, as the following examples show:
hire_date := '10-MAY-95';
hire_date := hire_date + 1; -- makes hire_date '11-MAY-95'
hire_date := hire_date - 5; -- makes hire_date '06-MAY-95'
When PL/SQL evaluates a boolean expression,
NOT has the highest precedence,
AND has the next-highest precedence, and
OR has the lowest precedence. However, you can use parentheses to override the default operator precedence.
Within an expression, operations occur in their predefined order of precedence. From first to last (top to bottom), the default order of operations is
PL/SQL evaluates operators of equal precedence in no particular order. When parentheses enclose an expression that is part of a larger expression, PL/SQL evaluates the parenthesized expression first, then uses the result in the larger expression. When parenthesized expressions are nested, PL/SQL evaluates the innermost expression first and the outermost expression last.
Several examples of expressions follow:
(a + b) > c -- Boolean expression
NOT finished -- Boolean expression
TO_CHAR(acct_no) -- character expression
'Fat ' || 'cats' -- character expression
'15-NOV-05' -- date expression
MONTHS_BETWEEN(d1, d2) -- date expression
pi * r**2 -- numeric expression
emp_cv%ROWCOUNT -- numeric expression