An expression is an arbitrarily complex combination of operands (variables, constants, literals, operators, function invocations, and placeholders) and operators. The simplest expression is a single variable.
The PL/SQL compiler determines the data type of an expression from the types of the operands and operators that comprise the expression. Every time the expression is evaluated, a single value of that type results.
See:
See "function_call ::=".
See:
See:
See:
See:
Expression whose value is TRUE
, FALSE
, or NULL
. For more information, see "BOOLEAN Expressions".
Restriction on boolean_expression Because SQL has no data type equivalent to BOOLEAN
, you cannot:
Assign a BOOLEAN
expression to a database table column
Select or fetch the value of a database table column into a BOOLEAN
variable
Use a BOOLEAN
expression in a SQL statement, SQL function, or PL/SQL function invoked from a SQL statement
See "Logical Operators".
Name of a constant of type BOOLEAN
.
Invocation of a previously defined function that returns a BOOLEAN
value. For more semantic information, see "function_call".
Name of a variable of type BOOLEAN
.
See "Conditional Predicates for Detecting Triggering DML Statement".
Name of a collection variable.
Collection method (function) that returns TRUE
if the index
th element of collection
exists and FALSE
otherwise. For more information, see "EXISTS Collection Method".
Restriction on EXISTS You cannot use EXISTS
if collection
is an associative array.
Numeric expression whose data type either is PLS_INTEGER
or can be implicitly converted to PLS_INTEGER
(for information about the latter, see "Predefined PLS_INTEGER Subtypes").
BETWEEN expression AND expression
See "BETWEEN Operator".
IN expression [, expression ]...
See "IN Operator".
See "LIKE Operator".
Implicit cursor associated with the most recently run SELECT
or DML statement. For more information, see "Implicit Cursors".
Cursor attributes explained in "Implicit Cursor Attribute" and "Named Cursor Attribute".
Expression whose value has a character data type (that is, a data type in the CHAR
family, described in "CHAR Data Type Family").
Name of a constant that has a character data type.
Invocation of a previously defined function that returns a value that either has a character data type or can be implicitly converted to a character data type. For more semantic information, see "function_call".
Literal of a character data type.
Name of a variable that has a character data type.
Concatenation operator, which appends one string operand to another. For more information, see "Concatenation Operator".
Constructs a collection of the specified type with elements that have the specified values. For more information, see "Collection Constructors".
Name of a previously declared nested table type or VARRAY
type (not an associative array type).
Valid value for an element of a collection of collection_type
.
If collection_type
is a varray type, then it has a maximum size, which the number of values cannot exceed. If collection_type
is a nested table type, then it has no maximum size.
If you specify no values, then the constructed collection is empty but not null (for the difference between empty and null, see "Collection Types").
Expression whose value has a date data type (that is, a data type in the DATE
family, described in "DATE Data Type Family").
Name of a constant that has a date data type.
Invocation of a previously defined function that returns a value that either has a date data type or can be implicitly converted to a date data type. For more semantic information, see "function_call".
Literal whose value either has a date data type or can be implicitly converted to a date data type.
Name of a variable that has a date data type.
Addition and subtraction operators.
Expression whose value has a date numeric type (that is, a data type in the DATE
family, described in "NUMBER Data Type Family").
Addition, subtraction, division, multiplication, and exponentiation operators.
Name of a collection variable.
COUNT, FIRST, LAST, LIMIT, NEXT, PRIOR
Collection methods explained in "Collection Method Invocation".
Name of a constant that has a numeric data type.
Invocation of a previously defined function that returns a value that either has a numeric data type or can be implicitly converted to a numeric data type. For more semantic information, see "function_call".
Literal of a numeric data type.
Name of variable that has a numeric data type.
Cursor attribute explained in "Implicit Cursor Attribute".
Cursor attribute explained in "SQL%BULK_ROWCOUNT".
Numeric expression.
Name of a previously defined function.
List of actual parameters for the function being called. The data type of each actual parameter must be compatible with the data type of the corresponding formal parameter. The mode of the formal parameter determines what the actual parameter can be:
Formal Parameter Mode | Actual Parameter |
---|---|
IN |
Constant, initialized variable, literal, or expression |
OUT |
Variable whose data type is not defined as NOT NULL |
IN OUT |
Variable (typically, it is a string buffer or numeric accumulator) |
If the function specifies a default value for a parameter, you can omit that parameter from the parameter list. If the function has no parameters, or specifies a default value for every parameter, you can either omit the parameter list or specify an empty parameter list.
WHEN boolean_expression THEN result
The boolean_expression
s are evaluated sequentially. If a boolean_expression
has the value TRUE
, then the result
associated with that boolean_expression
is returned. Subsequent boolean_expression
s are not evaluated.
The result
is returned if and only if no boolean_expression
has the value TRUE
.
If you omit the ELSE
clause, the searched case expression returns NULL
.
See Also:
"Searched CASE Statement"An expression of any PL/SQL type except BLOB
, BFILE
, or a user-defined type. The selector
is evaluated once.
WHEN selector_value THEN result
The selector_value
s are evaluated sequentially. If a selector_value
is the value of selector
, then the result
associated with that selector_value
is returned. Subsequent selector_value
s are not evaluated.
A selector_value
can be of any PL/SQL type except BLOB
, BFILE
, an ADT, a PL/SQL record, an associative array, a varray, or a nested table.
The result
is returned if and only if no selector_value
has the same value as selector
.
If you omit the ELSE
clause, the simple case expression returns NULL
.
Note:
If you specify the literalNULL
for every result
(including the result
in the ELSE
clause), then error PLS-00617 occurs.See Also:
"Simple CASE Statement"