Skip Headers
Oracle® Database PL/SQL User's Guide and Reference
10g Release 2 (10.2)

Part Number B14261-01
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Master Index
Master Index
Go to Feedback page
Contact Us

Go to previous page
Previous
View PDF

Index

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  Y  Z 

Symbols

%BULK_EXCEPTIONS. See BULK_EXCEPTIONS cursor attribute
%BULK_ROWCOUNT. See BULK_ROWCOUNT cursor attribute
%FOUND. See FOUND cursor attribute
%ISOPEN. See ISOPEN cursor attribute
%NOTFOUND. See NOTFOUND cursor attribute
%ROWCOUNT. See ROWCOUNT cursor attribute
%ROWTYPE. See ROWTYPE attribute
%TYPE. See TYPE attribute
:= assignment operator, 1.2.2.2
|| concatenation operator, 2.6.1.9
. item separator, 2.1.1
<< label delimiter, 2.1.1
.. range operator, 2.1.1, 4.3.6
=, !=, <>, and ~= relational operators, 2.6.1.4
<, >, <=, and >= relational operators, 2.6.1.4
@ remote access indicator, 2.1.1, 2.3
-- single-line comment delimiter, 2.1.1
; statement terminator, 2.1.1, 13
- subtraction/negation operator, 2.1.1

A

ACCESS_INTO_NULL exception, 10.3
actual parameters, 6.4.2
additional information
Oracle Technology Network, Preface, 1
address
REF CURSOR, 6.5.1
advantages
PL/SQL, 1.1
aggregate assignment, 2.2.5.1
aggregate functions
and PL/SQL, 6.1.3
AVG, 2.9
COUNT, 2.9
AL16UTF16 character encoding, 3.1.3.1
aliases
using with a select list, 2.2.5.2
aliasing
for expression values in a cursor FOR loop, 6.3.7
parameters, 8.13
ALL row operator, 6.1.3, 6.1.5
ALL_PLSQL_OBJECT_SETTINGS view
PL/SQL compiler parameter settings, 11.1, 11.2, 11.9.7
ALTER .. COMPILE statement, 10.9.2
ALTER PROCEDURE
using to recompile a procedure, 10.9.3
analytic functions
CORR, 2.9
LAG, 2.9
anonymous blocks, 1.2.1
apostrophes, 2.1.3.3
architecture
PL/SQL, 1.3
ARRAY
VARYING, 5.3
arrays
associative, 5.1.1
index-by-tables, 5.1.1
variable-size, 5.1.1
articles
technical on OTN, Preface
AS
defining a procedure, 8.3
defining a procedure body, 8.3
assignment operator, 1.2.2.2
assignment statement
links to examples, 13
syntax, 13
assignments
aggregate, 2.2.5.1
character string, 3.4.1
collection, 5.5
field, 5.11
IN OUT parameters, 1.2.2.2
records, 5.11
semantics, 3.4.1
variables, 1.2.2.2
associative arrays
sets of key-value pairs, 5.1.1.3
syntax, 13
understanding, 5.1.1
VARCHAR2 keys and globalization settings, 5.1.1.4
versus nested tables, 5.2.1
asynchronous operations, 9.7.1
atomically null
object types in PL/SQL, 12.1.2
attributes
%ROWTYPE, 1.2.5.2, 2.2.5
%TYPE, 1.2.5.1, 2.2.4
explicit cursors, 6.2.2.6, 6.2.2.6
AUTHID clause
specifying privileges for a subprogram, 8.9.2
use with functions, 8.4
using to specify privileges of invoker, 8.9
autonomous functions
calling from SQL, 6.8.5
RESTRICT_REFERENCES pragma, 6.8.5
autonomous transactions
advantages, 6.8.1
avoiding errors, 6.8.3
comparison with nested transactions, 6.8.2.1
controlling, 6.8.3
in PL/SQL, 6.8
SQL%ROWCOUNT attribute, 6.2.1.1
autonomous triggers
using, 6.8.4
AUTONOMOUS_TRANSACTION pragma
defining, 6.8.2
links to examples, 13
syntax, 13
AVG
SQL aggregate function, 2.9

B

base types
PL/SQL number types, 3.1.1.1.1
PL/SQL types, 3.2
basic loops, 4.3.1
BEGIN
block structure, 1.2.1
start of executable part, 8.3
start of executable PL/SQL block, 13
syntax, 13
best practices
locating information on OTN, Preface
Oracle Technology Network, 1, 11
BETWEEN clause
FORALL, 13
BETWEEN comparison operator, 2.6.1.7
expressions, 13
BFILE datatype, 3.1.4.1
binary operators, 2.6
BINARY_DOUBLE datatype, 3.1.1.2
BINARY_FLOAT and BINARY_DOUBLE datatypes
for computation-intensive programs, 11.6
BINARY_FLOAT datatype, 3.1.1.2
BINARY_FLOAT_INFINITY
constant, 3.1.1.2
BINARY_FLOAT_MAX_NORMAL
constant, 3.1.1.2
BINARY_FLOAT_MAX_SUBNORMAL
constant, 3.1.1.2
BINARY_FLOAT_MIN_NORMAL
constant, 3.1.1.2
BINARY_FLOAT_MIN_SUBNORMAL
constant, 3.1.1.2
BINARY_FLOAT_NAN
constant, 3.1.1.2
BINARY_INTEGER datatype, 3.1.1.1
compared to PLS_INTEGER, Preface
new features, Preface
BINARY_INTEGER. See also PLS_INTEGER
bind variables, 1.2.2.3
binding, 11.5
blank-padding semantics, 3.4.2
BLOB datatype, 3.1.4.2
block declaration
syntax, 13
blocks
BEGIN, 1.2.1
DECLARE, 1.2.1
END, 1.2.1
EXCEPTION, 1.2.1
label, 2.4
links to examples, 13
nesting, 1.2.1, 1.2.1
PL/SQL, 13
structure, 1.2.1, 1.2.1
syntax, 13
BODY
CREATE PACKAGE SQL statement, 1.2.8.2, 9.1, 13
CREATE TYPE SQL statement, 13
with SQL CREATE PACKAGE statement, 1.2.8.2, 9.1
body
cursor, 9.9
function, 13
functions, 8.4
package, 9.4
packages, 13
procedure, 8.3, 13
Boolean
assigning values, 2.5.1
expressions, 2.6.2
literals, 2.1.3.4
BOOLEAN datatype, 3.1.5.1
built-in functions, 2.9
bulk
fetches, 11.5.2.1
returns, 11.5.2.3
BULK clause
with COLLECT, 11.5.2
BULK COLLECT clause, 11.5.2
checking whether no results are returned, 11.5.2
DELETE statement, 13
EXECUTE IMMEDIATE, 13
FETCH, 13
retrieving DML results, 11.5.2.3
retrieving query results with, 11.5.2
RETURNING clause, 13
returning multiple rows, 6.3.2
SELECT INTO, 13
using LIMIT clause, 11.5.2, 11.5.2.2
using ROWNUM pseudocolumn, 11.5.2
using SAMPLE clause, 11.5.2
using with FORALL statement, 11.5.2.4
bulk SQL
in dynamic SQL, 7.3
using to reduce loop overhead, 11.5
BULK_EXCEPTIONS cursor attribute
ERROR_CODE field, 11.5.1.3
ERROR_INDEX field, 11.5.1.3
example, 11.5.1.3
handling FORALL exceptions, 11.5.1.3
using ERROR_CODE field with SQLERRM, 11.5.1.3
BULK_ROWCOUNT cursor attribute
affected by FORALL, 11.5.1.2
by-reference parameter passing, 8.13
by-value parameter passing, 8.13

C

CALL
SQL statement, 1.2.8.2
call specification, 9.1
calling
Java stored procedures, 8.11
procedures, 1.2.8.2
stored subprograms, 1.3.1.2
calls
inter-language, 8.11
resolving subprogram, 8.8
subprograms, 8.6.2
CARDINALITY operator
for nested tables, 5.6
carriage returns, 2.1
CASE expressions, 2.6.3, 2.6.3
overview, 1.2.6.1
case sensitivity
identifier, 2.1.2
string literal, 2.1.3.3
CASE statement
links to examples, 13
searched, 4.2.4.1
syntax, 13
using, 4.2.4
CASE_NOT_FOUND exception, 10.3
CHAR datatype, 3.1.2.1
differences with VARCHAR2, 3.4
character literals, 2.1.3.2
character sets
PL/SQL, 2.1
CHARACTER subtype, 3.1.2.1.1
character values
assigning, 3.4.1
comparing, 3.4.2
inserting, 3.4.3
selecting, 3.4.4
clauses
AUTHID, 8.4, 8.9, 8.9.2
BULK COLLECT, 11.5.2
LIMIT, 11.5.2.2
CLOB datatype, 3.1.4.3
CLOSE statement
disables cursor, 6.2.2.5
disabling cursor variable
closing, 6.5.4.4
links to examples, 13
syntax, 13
code samples
Oracle Technology Network, Preface, 1
collating sequence, 2.6.2.2
COLLECT clause
with BULK, 11.5.2
collection exceptions
when raised, 5.9
collection methods
syntax, 13
usage, 5.8
COLLECTION_IS_NULL exception, 10.3
collections
allowed subscript ranges, 5.4.1
applying methods to parameters, 5.8.9
assigning, 5.5
associative arrays versus nested tables, 5.2.1
avoiding exceptions, 5.9
bulk binding, 5.11.5, 11.5
choosing the type to use, 5.2
comparing, 5.6
constructors, 5.4
COUNT method, 5.8.2
declaring variables, 5.3, 5.3.1
defining types, 5.3
DELETE method, 5.8.8
element types, 5.3
EXISTS method, 5.8.1
EXTEND method, 5.8.6
FIRST method, 5.8.4
initializing, 5.4
LAST method, 5.8.4
LIMIT method, 5.8.3
links to examples, 13, 13
methods, 5.8
multilevel, 5.7
NEXT method, 5.8.5
operators to transform nested tables, 5.5
ordered group of elements, 5.1
overview, 1.2.10.2
PRIOR method, 5.8.5
referencing, 5.4
referencing elements, 5.4.1
scope, 5.3
syntax, 13
testing for null, 5.6
TRIM method, 5.8.7
types in PL/SQL, 5
understanding, 5.1.1
using object types with, 12.4
varrays versus nested tables, 5.2.2
column aliases
expression values in a cursor loop, 6.3.7
when needed, 2.2.5.2
COMMENT clause
using with transactions, 6.7.1
comments
in PL/SQL, 2.1.4
links to examples, 13
restrictions, 2.1.4.3
syntax, 13
COMMIT statement, 6.7.1, 13
links to examples, 13
comparison operators, 6.1.5
comparisons
of character values, 3.4.2
of expressions, 2.6.2
of null collections, 5.6
operators, 2.6.1.3
PL/SQL, 2.6
with NULLs, 2.6.4
compiler parameter settings
ALL_PLSQL_OBJECT_SETTINGS view, 11.1, 11.2, 11.9.7
compiler parameters
and REUSE SETTINGS clause, 11.1
PL/SQL, 11.1
compiling
conditional, 1.2.7, 2.7
PL/SQL procedures for native execution, 11.9
composite types
collection and records, 5.1
overview, 3.1
concatenation operator, 2.6.1.9
treatment of nulls, 2.6.4.1
conditional compilation, 1.2.7, 2.7
availability for previous Oracle database releases, 2.7.1
control tokens, 2.7.1.1
examples, 2.7.2.1
inquiry directives, 2.7.1.4
limitations, 2.7.3
new features, Preface
NLS_LENGTH_SEMANTICS initialization parameter, 2.7.1.5
PLSQL_CCFLAGS initialization parameter, 2.7.1.5
PLSQL_CODE_TYPE initialization parameter, 2.7.1.5
PLSQL_DEBUG initialization parameter, 2.7.1.5
PLSQL_LINE flag, 2.7.1.5
PLSQL_OPTIMIZE_LEVEL initialization parameter, 2.7.1.5
PLSQL_UNIT flag, 2.7.1.5
PLSQL_WARNINGS initialization parameter, 2.7.1.5
restrictions, 2.7.3
static constants, 2.7.1.6.4
using PLSQL_CCFLAGS initialization parameter, 2.7.1.7, 2.7.1.7
using static expressions with, 2.7.1.6
using with DBMS_DB_VERSION, 2.7.1.8
using with DBMS_PREPROCESSOR, 2.7.2.2
conditional control, 4.2
conditional statement
guidelines, 4.2.5
CONSTANT
declaration, 13
for declaring constants, 1.2.2.4, 2.2.1
constants
declaring, 1.2.2.4, 2.2, 2.2.1
links to examples, 13
static, 2.7.1.6.4
syntax, 13
understanding PL/SQL, 1.2.2
constraints
NOT NULL, 2.2.3
constructors
collection, 5.4
context
transactions, 6.8.2.2
control structures
conditional, 4.2
iterative, 4.3
overview of PL/SQL, 4.1
sequential, 4.4
understanding, 1.2.6
conventions
PL/SQL naming, 2.3
conversions
datatype, 3.3
functions, 3.3.2
CORR
SQL analytic function, 2.9
correlated subqueries, 6.4.1
COUNT
SQL aggregate function, 2.9
COUNT method
collections, 5.8.2, 13
CREATE
with PROCEDURE statement, 1.2.8.1, 1.3.1.2, 8.1
CREATE FUNCTION statement, 1.2.8.1, 1.3.1.2, 8.1
CREATE PROCEDURE statement, 1.2.8.1, 1.3.1.2, 8.1
CREATE statement
packages, 1.2.8.2, 9.1
with FUNCTION, 1.2.8.1, 1.3.1.2, 8.1
CREATE_WRAPPED function
obfuscation, A.3
using, A.3.1
creating
functions, 1.2.8.1, 1.3.1.2, 8.1
packages, 1.2.8.2, 9.1
procedures, 1.2.8.1, 1.3.1.2, 8.1
CURRENT OF clause
with UPDATE, 6.7.7
CURRVAL
pseudocolumn, 6.1.4
cursor attributes
%BULK_EXCEPTIONS, 11.5.1.3
%BULK_ROWCOUNT, 11.5.1.2
%FOUND, 6.2.1.1, 6.2.2.6
%ISOPEN, 6.2.1.1, 6.2.2.6
%NOTFOUND, 6.2.1.1, 6.2.2.6
%ROWCOUNT, 6.2.1.1, 6.2.2.6
explicit, 6.2.2.6
implicit, 6.2.1.1
links to examples, 13
syntax, 13
values after OPEN, FETCH, and CLOSE, 6.2.2.6
cursor declarations
links to examples, 13
syntax, 13
cursor expressions
examples, 6.6.2
REF CURSORs, 6.6.3
restrictions, 6.6.1
using, 6.6
cursor FOR loops
passing parameters to, 6.4.2
cursor subqueries
using, 6.6
cursor variables, 6.5
advantages of, 6.5.2
as parameters to table functions, 11.10.8
avoiding errors with, 6.5.6
closing, 6.5.4.4
declaring, 6.5.3
defining, 6.5.3
fetching from, 6.5.4.3
links to examples, 13
opening, 6.5.4.1
passing as parameters, 6.5.3.1
reducing network traffic, 6.5.5
restrictions, 6.5.7
syntax, 13
using as a host variable, 6.5.4.2
CURSOR_ALREADY_OPEN exception, 10.3
cursors
advantages of using cursor variables, 6.5.2
attributes of explicit, 6.2.2.6
attributes of implicit, 6.2.1.1
closing explicit, 6.2.2.5
declaring explicit, 6.2.2.1
definition, 1.2.10.1
explicit, 1.2.10.1, 6.2.2
explicit FOR loops, 6.3.6
expressions, 6.6
fetching from, 6.2.2.3
guidelines for implicit, 6.2.1.2
implicit, 1.2.10.1
opening explicit, 6.2.2.2
packaged, 9.9
parameterized, 6.4.2
REF CURSOR variables, 6.5
RETURN clause, 9.9
scope rules for explicit, 6.2.2.1
SYS_REFCURSOR type, 11.10.8
variables, 6.5

D

data abstraction
understanding PL/SQL, 1.2.10
database character set, 3.1.3
database triggers, 1.3.1.3
autonomous, 6.8.4
datatypes
BFILE, 3.1.4.1
BINARY_INTEGER, 3.1.1.1
BLOB, 3.1.4.2
BOOLEAN, 3.1.5.1
CHAR, 3.1.2.1
CLOB, 3.1.4.3
DATE, 3.1.6.1
explicit conversion, 3.3.1
families, 3.1
implicit conversion, 3.3.2
INTERVAL DAY TO SECOND, 3.1.6.6
INTERVAL YEAR TO MONTH, 3.1.6.5
LONG, 3.1.2.2
LONG RAW, 3.1.2.2
national character, 3.1.3
NCHAR, 3.1.3.2
NCLOB, 3.1.4.4
NUMBER, 3.1.1.3
NVARCHAR2, 3.1.3.3
PLS_INTEGER, 3.1.1.4
PL/SQL, 3
RAW, 3.1.2.3
RECORD, 5.1
REF CURSOR, 6.5.1
ROWID, 3.1.2.4
scalar versus composite, 3.1
TABLE, 5.3
TIMESTAMP, 3.1.6.2
TIMESTAMP WITH LOCAL TIME ZONE, 3.1.6.4
TIMESTAMP WITH TIME ZONE, 3.1.6.3
UROWID, 3.1.2.4
VARCHAR2, 3.1.2.5
VARRAY, 5.1.1.2, 5.3
DATE datatype, 3.1.6.1
dates
converting, 3.3.4
TO_CHAR default format, 3.3.4
datetime
arithmetic, 3.1.7
datatypes, 3.1.6
literals, 2.1.3.5
DAY
datatype field, 3.1.6
DBMS_ALERT package, 9.7.1
DBMS_DB_VERSION package
using with conditional compilation, 2.7.1.8
DBMS_DDL package
functions for hiding PL/SQL source code, A
limitations, A.1.2
obfuscating PL/SQL code, A
using, A.3.1
wrap functions, A.3
wrapping PL/SQL code, A
DBMS_OUTPUT package
displaying output, 1.2.9
displaying output from PL/SQL, 9.7.2
using PUT_LINE to display output, 1.2.2.2
DBMS_PIPE package, 9.7.3
DBMS_PREPROCESSOR package
using with conditional compilation, 2.7.2.2
DBMS_PROFILE package
gathering statistics for tuning, 11.4.1
DBMS_SQL package, 7.1
PARSE procedure, 8.9.4
replace with dynamic SQL, 7.1
upgrade to dynamic SQL, 11.7
using for a query, 7.1
DBMS_TRACE package
tracing code for tuning, 11.4.2
DBMS_WARNING package
controlling warning messages in PL/SQL, 10.9.3
dbmsupbin.sql script
interpreted compilation, 11.9.9
dbmsupgnv.sql script
for PL/SQL native compilation, 11.9.9
deadlocks
how handled by PL/SQL, 6.7.4
DEC
NUMBER subtype, 3.1.1.3.1
DECIMAL
NUMBER subtype, 3.1.1.3.1
declarations
collection, 5.3.1
constants, 1.2.2.4, 2.2.1
cursor variables, 6.5.3
exceptions in PL/SQL, 10.4.1
explicit cursor, 6.2.2.1
object in a PL/SQL block, 12.1.1
PL/SQL functions, 1.2.4
PL/SQL procedures, 1.2.4
PL/SQL subprograms, 1.2.4
PL/SQL variables, 1.2.5
restrictions, 2.2.6
subprograms, 8.5
using %ROWTYPE, 2.2.5
using %TYPE attribute, 2.2.4
using DEFAULT, 2.2.2
using NOT NULL constraint, 2.2.3
variables, 1.2.2.1, 2.2
declarative part
of function, 8.4
of PL/SQL block, 1.2.1
of procedure, 8.3
DECLARE
block structure, 1.2.1
for local declarations, 8.3
start of declarative part of a PL/SQL block, 13
syntax, 13
DECODE function
treatment of nulls, 2.6.4.1
DEFAULT keyword
for assignments, 2.2.2
DEFAULT option
FUNCTION, 13
RESTRICT_REFERENCES, 13
default parameter values, 8.6.4
default value
effect on %ROWTYPE declaration, 2.2.5
effect on %TYPE declaration, 2.2.4
DEFINE
limitations of use with wrap utility, A.1.2.1
definer's rights
privileges on subprograms, 8.9
DELETE method
collections, 5.8.8, 13
DELETE statement
links to examples, 13
syntax, 13
delimiters, 2.1.1
demos
PL/SQL, Preface
dense collections
arrays versus nested tables, 5.1.1.1
DETERMINISTIC hint
function syntax, 13
use with functions, 8.4
digits of precision, 3.1.1.3
displaying output
from PL/SQL, 1.2.2.2
setting SERVEROUTPUT, 1.2.9, 9.7.2
using DBMS_OUTPUT.PUT_LINE, 1.2.2.2
with DBMS_OUTPUT, 1.2.9
DISTINCT row operator, 6.1.3, 6.1.5
dot notation, 1.2.5.1
for collection methods, 5.8
for global variables, 4.3.6.3
for object attributes in PL/SQL, 12.2.1
for object methods in PL/SQL, 12.2.2
for package contents, 9.3.1
DOUBLE PRECISION
NUMBER subtype, 3.1.1.3.1
DUP_VAL_ON_INDEX exception, 10.3
dynamic dispatch, 8.8.1
dynamic SQL, 1.1.1, 7.1
building a dynamic multi-row query, 7.4.1
guidelines, 7.4
improving performance, 7.4.3
passing nulls, 7.4.7
passing object names as parameters, 7.4.4
RETURNING clause, 7.2
specifying parameter modes, 7.2.1
tips and traps, 7.4
tuning, 11.7
using bulk SQL, 7.3
USING clause, 7.2
using cursor attributes, 7.4.6
using database links, 7.4.8
using duplicate placeholders, 7.4.5
using EXECUTE IMMEDIATE statement, 7.2
using invoker rights, 7.4.9
using RESTRICT_REFERENCES, 7.4.10
using the semicolon, 7.4.2
dynamic string length
with OPEN FOR statement, 13
dynamic wrapping
DBMS_DDL package, A
new features, Preface

E

element types
collection, 5.3
ELSE clause
using, 4.2.2
ELSIF clause
using, 4.2.3
END
block structure, 1.2.1
end of a PL/SQL block, 13
end of executable part, 8.3
syntax, 13
END IF
end of IF statement, 4.2.1
END LOOP
end of LOOP statement, 4.3.5
error handling
in PL/SQL, 10
overview, 1.2.11
error messages
maximum length, 10.8.4
ERROR_CODE
BULK_EXCEPTIONS cursor attribute field, 11.5.1.3
using with SQLERRM, 11.5.1.3
ERROR_INDEX
BULK_EXCEPTIONS cursor attribute field, 11.5.1.3
evaluation
short-circuit, 2.6.1.2
EXCEPTION
block structure, 1.2.1
exception handling part, 8.3
exception-handling part of a block, 13
syntax in PL/SQL block, 13
exception definition
syntax, 13
exception handlers
OTHERS handler, 10.1
overview, 1.2.11
using RAISE statement in, 10.7, 10.8
using SQLCODE function in, 10.8.4
using SQLERRM function in, 10.8.4
WHEN clause, 10.8
EXCEPTION_INIT pragma
links to examples, 13
syntax, 13
using with RAISE_APPLICATION_ERROR, 10.4.4
with exceptions, 10.4.3
exception-handling part
of function, 8.4
of PL/SQL block, 1.2.1
of procedure, 8.3
exceptions
advantages of PL/SQL, 10.2
branching with GOTO, 10.8.3
catching unhandled in PL/SQL, 10.8.5
continuing after an exception is raised, 10.8.6.1
controlling warning messages, 10.9.2
declaring in PL/SQL, 10.4.1
definition, 13
handling in PL/SQL, 10
links to examples, 13
list of predefined in PL/SQL, 10.3
locator variables to identify exception locations, 10.8.6.3
OTHERS handler in PL/SQL, 10.8
PL/SQL compile-time warnings, 10.9
PL/SQL error condition, 10.1
PL/SQL warning messages, 10.9.1
predefined in PL/SQL, 10.3
propagation in PL/SQL, 10.6
raise_application_error procedure, 10.4.4
raised in a PL/SQL declaration, 10.8.1
raised in handlers, 10.8.2
raising in PL/SQL, 10.5
raising predefined explicitly, 10.5.1
raising with RAISE statement, 10.5.1
redeclaring predefined in PL/SQL, 10.4.5
reraising in PL/SQL, 10.7
retrying a transaction after, 10.8.6.2
scope rules in PL/SQL, 10.4.2
tips for handling PL/SQL errors, 10.8.6
user-defined in PL/SQL, 10.4
using EXCEPTION_INIT pragma, 10.4.3
using SQLCODE, 10.8.4
using SQLERRM, 10.8.4
using the DBMS_WARNING package, 10.9.3
using WHEN and OR, 10.8
WHEN clause, 10.8
executable part
of function, 8.4
of PL/SQL block, 1.2.1
of procedure, 8.3
EXECUTE IMMEDIATE statement, 7.2
links to examples, 13
syntax, 13
EXECUTE privilege
subprograms, 8.9.6
EXISTS method
collections, 5.8.1, 13
EXIT statement
early exit of LOOP, 4.3.6.4
links to examples, 13
stopping a loop, 4.3.1
syntax, 13
using, 4.3.2
where allowed, 4.3.1
EXIT-WHEN statement
overview, 1.2.6.2
using, 4.3.3
explicit cursors, 6.2.2
explicit datatype conversion, 3.3.1
explicit declarations
cursor FOR loop record, 6.3.6
expressions
Boolean, 2.6.2
CASE, 2.6.3, 2.6.3
examples, 13
PL/SQL, 2.6
static, 2.7.1.6
syntax, 13
EXTEND method
collections, 5.8.6, 13
extended rowids, 3.1.2.4.1
external
references, 8.9.2
routines, 8.11
subprograms, 8.11

F

FALSE value, 2.1.3.4
features, new, Preface
FETCH statement
links to examples, 13
syntax, 13
using explicit cursors, 6.2.2.3
with cursor variable, 6.5.4.3
fetching
across commits, 6.7.7
bulk, 11.5.2.1, 11.5.2.1
fields
of records, 5.1
file I/O, 9.7.5
FIRST method
collections, 5.8.4, 13
FLOAT
NUMBER subtype, 3.1.1.3.1
FOR loops
explicit cursors, 6.3.6
nested, 4.3.6.3
FOR UPDATE clause, 6.2.2.2
when to use, 6.7.7
FORALL statement
links to examples, 13
syntax, 13
using, 11.5.1
using to improve performance, 11.5.1
using with BULK COLLECT clause, 11.5.2.4
with rollbacks, 11.5.1.1
FOR-LOOP statement
syntax, 13
using, 4.3.6
formal parameters, 6.4.2
format
masks, 3.3.4
forward
declarations of subprograms, 8.5
references, 2.2.6
FOUND cursor attribute
explicit, 6.2.2.6
implicit, 6.2.1.1
FUNCTION
with CREATE statement, 1.2.8.1, 1.3.1.2, 8.1
function declaration
syntax, 13
functions
body, 8.4, 13
built-in, 2.9
calling, 8.4
creating, 1.2.8.1, 1.3.1.2, 8.1
declaration, 13
DETERMINISTIC hint, 8.4
in PL/SQL, 8
links to examples, 13
PARALLEL_ENABLE option, 8.4
parameters, 8.4
parts, 8.4
pipelined, 11.10
RETURN clause, 8.4
RETURN statement, 8.4.1
specification, 8.4
table, 11.10.1
understanding, 8.4

G

GOTO statement
branching into or out of exception handler, 10.8.3
label, 4.4.1
links to examples, 13
overview, 1.2.6.3
restrictions, 4.4.1.1
syntax, 13
using, 4.4.1
GROUP BY clause, 6.1.3

H

handlers
exception in PL/SQL, 10.1
handling errors
PL/SQL, 10
handling exceptions
PL/SQL, 10
raised in as PL/SQL declaration, 10.8.1
raised in handler, 10.8.2
using OTHERS handler, 10.8
handling of nulls, 2.6.4
hash tables
simulating with associative arrays, 5.2
hiding PL/SQL code, A
host arrays
bulk binds, 11.5.2.5
HOUR
datatype field, 3.1.6
HTF package, 9.7.4
HTP package, 9.7.4
hypertext markup language (HTML), 9.7.6
hypertext transfer protocol (HTTP), 1.1.6
UTL_HTTP package, 9.7.6

I

identifiers
forming, 2.1.2
maximum length, 2.1.2
quoted, 2.1.2.3
scope rules, 2.4
IF statement, 4.2
ELSE clause, 4.2.2
links to examples, 13
syntax, 13
using, 4.2.1
IF-THEN statement
using, 4.2.1
IF-THEN-ELSE statement
overview, 1.2.6.1
using, 4.2.2
IF-THEN-ELSEIF statement
using, 4.2.3
IMMEDIATE
with EXECUTE statement, 7.2
implicit cursors
attributes, 6.2.1.1
guidelines, 6.2.1.2
implicit datatype conversion, 3.3.2
implicit datatype conversions
performance, 11.3.1.6
implicit declarations
FOR loop counter, 4.3.6.3
IN comparison operator, 2.6.1.8
IN OUT parameter mode
subprograms, 8.6.3.3
IN parameter mode
subprograms, 8.6.3.1
INDEX BY
collection definition, 13
index-by tables
See associative arrays
INDICES OF clause
FORALL, 13
with FORALL, 11.5.1
infinite loops, 4.3.1
inheritance
and overloading, 8.8.1
initialization
collections, 5.4
objects in PL/SQL, 12.1.2
package, 9.4
using DEFAULT, 2.2.2
variable, 2.5
with NOT NULL constraint, 2.2.3
initialization parameters
PL/SQL compilation, 11.1
INSERT statement
links to examples, 13
syntax, 13
with a record variable, 5.11.2
INT
NUMBER subtype, 3.1.1.3.1
INTEGER
NUMBER subtype, 3.1.1.3.1
integer
BINARY, 3.1.1.1
PLS datatype, 3.1.1.4
inter-language calls, 8.11
interpreted compilation
dbmsupbin.sql script, 11.9.9
recompiling all PL/SQL modules, 11.9.9
INTERSECT set operator, 6.1.5
interval
arithmetic, 3.1.7
INTERVAL DAY TO SECOND datatype, 3.1.6.6
INTERVAL YEAR TO MONTH datatype, 3.1.6.5
intervals
datatypes, 3.1.6
INTO
SELECT INTO statement, 13
INTO clause
with FETCH statement, 6.5.4.3
INTO list
using with explicit cursors, 6.2.2.3
INVALID_CURSOR exception, 10.3
INVALID_NUMBER exception, 10.3
invoker's rights
advantages, 8.9.1
privileges on subprograms, 8.9
IS
defining a procedure, 8.3
defining a procedure body, 8.3
IS A SET operator, 5.6
IS EMPTY operator, 5.6
IS NULL comparison operator, 2.6.1.5
expressions, 13
ISOLATION LEVEL parameter
READ COMMITTED, 13
SERIALIZABLE, 13
setting transactions, 13
ISOPEN cursor attribute
explicit, 6.2.2.6
implicit, 6.2.1.1

J

JAVA
use for calling external subprograms, 8.11
Java
call specs, 8.11
Java stored procedures
calling from PL/SQL, 8.11
JDeveloper with PL/SQL
Oracle By Example tutorial, Preface

K

keywords
in PL/SQL, D
list of PL/SQL, D
use in PL/SQL, 2.1.2.1

L

labels
block, 2.4
block structure, 13
exiting loops, 4.3.4
GOTO statement, 4.4.1
loops, 4.3.4
syntax, 13
LAG
SQL analytic function, 2.9
LANGUAGE
use for calling external subprograms, 8.11
language elements
of PL/SQL, 13
large object (LOB) datatypes, 3.1.4
LAST method
collections, 5.8.4, 13
LEVEL
pseudocolumn, 6.1.4
LEVEL parameter
with ISOLATION to set transactions, 13
lexical units
PL/SQL, 2.1
LIKE comparison operator, 2.6.1.6
expressions, 13
LIMIT clause
FETCH, 13
using to limit rows for a Bulk FETCH operation, 11.5.2.2
LIMIT method
collections, 5.8.3, 13
limitations
DBMS_DDL package, A.1.2
native compilation, 11.9.3.3
of PL/SQL programs, C
PL/SQL compiler, C
wrap utility, A.1.2
limits
on PL/SQL programs, C
literals
Boolean, 2.1.3.4
character, 2.1.3.2
datetime, 2.1.3.5
examples, 13
NCHAR string, 2.1.3.3
NUMBER datatype, 2.1.3.1
numeric, 2.1.3.1
numeric datatypes, 2.1.3.1
string, 2.1.3.3
syntax, 13
types of PL/SQL, 2.1.3
LOB (large object) datatypes, 3.1.4
lob locators, 3.1.4
local subprograms, 1.3.1.2
locator variables
used with exceptions, 10.8.6.3
LOCK TABLE statement
examples, 13
locking a table, 6.7.7
syntax, 13
locks
modes, 6.7
overriding, 6.7.7
transaction processing, 6.7
using FOR UPDATE clause, 6.7.7
logical operators, 2.6.1
logical rowids, 3.1.2.4
LOGIN_DENIED exception, 10.3
LONG datatype, 3.1.2.2
maximum length, 3.1.2.2
restrictions, 3.1.2.2
supported only for backward compatibility, 3.1.2.2
LONG RAW datatype, 3.1.2.2
converting, 3.3.5
maximum length, 3.1.2.2
supported only for backward compatibility, 3.1.2.2
LOOP statement
links to examples, 13
overview, 1.2.6.2
syntax, 13
using, 4.3.1
loops
counters, 4.3.6
dynamic ranges, 4.3.6.2
exiting using labels, 4.3.4
implicit declaration of counter, 4.3.6.3
iteration, 4.3.6.1
labels, 4.3.4
reversing the counter, 4.3.6
scope of counter, 4.3.6.3

M

maximum precision, 3.1.1.3
maximum size
CHAR value, 3.1.2.1
identifier, 2.1.2
LOB, 3.1.4
LONG RAW value, 3.1.2.2
LONG value, 3.1.2.2
NCHAR value, 3.1.3.2
NVARCHAR2 value, 3.1.3.3
Oracle error message, 10.8.4
RAW value, 3.1.2.3
VARCHAR2 value, 3.1.2.5
MEMBER OF operator, 5.6
membership test, 2.6.1.8
memory
avoid excessive overhead, 11.3.2
MERGE statement
syntax, 13
methods
collection, 5.8
MINUS set operator, 6.1.5
MINUTE
datatype field, 3.1.6
modularity, 1.2.8
packages, 9.2
MONTH
datatype field, 3.1.6
multilevel collections
using, 5.7
multi-line comments, 2.1.4.2
MULTISET EXCEPT operator, 5.5
MULTISET INTERSECT operator, 5.5
MULTISET UNION operator, 5.5

N

NAME
for calling external subprograms, 8.11
NAME parameter
setting transactions, 13
transactions, 6.7.6
name resolution, 2.3
differences between PL/SQL and SQL, B.3
global and local variables, B.1
inner capture in DML statements, B.5
overriding in subprograms, 8.9.5
qualified names and dot notation, B.2
qualifying references to attributes and methods, B.6
understanding, B.1
understanding capture, B.4
with synonyms, 8.9.5
names
explicit cursor, 6.2.2.1
qualified, 2.3
savepoint, 6.7.3
variable, 2.3
naming conventions
PL/SQL, 2.3
national character datatypes, 3.1.3
national character set, 3.1.3
National Language Support (NLS), 3.1.3
native compilation
and Real Application Clusters, 11.9.3.2
certified compilers in installation guides, 11.9.1
creating databases for, 11.9.8
dbmsupgnv.sql script, 11.9.9
dependencies, 11.9.3.1
enhancements, Preface
how it works, 11.9.3
initialization parameters, 11.9.5
invalidation, 11.9.3.1
limitations, 11.9.3.3
modifying databases for, 11.9.9
new and updated components, Preface
Oracle Metalink, 11.9
Oracle Technology Network, 11.9
performance gains, 11.9.2
PL/SQL code, 11.9
plsql_code_type column, 11.9.7
prerequirements, 11.9.1
revalidation, 11.9.3.1
setting up, 11.9.7
setting up databases, 11.9.8
setting up library subdirectories, 11.9.6
shared libraries, 11.9.3
spnc_commands file, 11.9.4
testing, 11.9.1
understanding, 11.9.1
using, 11.9.7
utlirp.sql script, 11.9.7
utlrp.sql script, 11.9.9
native dynamic SQL. See dynamic SQL
native execution
compiling PL/SQL procedures for, 11.9
NATURAL
BINARY_INTEGER subtype, 3.1.1.1.1
NATURAL and NATURALN subtypes, 3.1.1.1.1
NATURALN
BINARY_INTEGER subtype, 3.1.1.1.1
NCHAR datatype, 3.1.3.2
NCLOB datatype, 3.1.4.4
nested collections, 5.7
nested cursors
using, 6.6
nested tables
manipulating in PL/SQL, 12.4
sets of values, 5.1.1.1
syntax, 13
transforming with operators, 5.5
understanding, 5.1.1
versus associative arrays, 5.2.1
versus varrays, 5.2.2
nesting
block, 1.2.1, 1.2.1
FOR loops, 4.3.6.3
record, 5.10
new features, Preface
PL/SQL information on Oracle Technology Network, Preface
NEXT method
collections, 5.8.5, 13
NEXTVAL
pseudocolumn, 6.1.4
nibble
half a byte, 3.3.5
NLS (National Language Support), 3.1.3
NLS_LENGTH_SEMANTICS initialization parameter
use with conditional compilation, 2.7.1.5
NO COPY hint
FUNCTION, 13
NO_DATA_FOUND exception, 10.3
NOCOPY compiler hint
for tuning, 11.8
restrictions on, 11.8.1
non-blank-padding semantics, 3.4.2
NOT logical operator
treatment of nulls, 2.6.4.1
NOT NULL
declaration, 13
NOT NULL constraint
effect on %ROWTYPE declaration, 2.2.5
effect on %TYPE declaration, 2.2.4
restriction on explicit cursors, 6.2.2.1
using in collection declaration, 5.3.1
using in variable declaration, 2.2.3
NOT NULL option
record definition, 13
NOT_LOGGED_ON exception, 10.3
notation
positional versus named, 8.6.2
NOTFOUND cursor attribute
explicit, 6.2.2.6
implicit, 6.2.1.1
NOWAIT option
LOCK TABLE, 13
NOWAIT parameter
using with FOR UPDATE, 6.7.7
NVARCHAR2 datatype, 3.1.3.3
null handling, 2.6.4
in dynamic SQL, 7.4.7
NULL statement
links to examples, 13
syntax, 13
using, 4.4.2
using in a procedure, 8.3
NUMBER datatype, 3.1.1.3
range of literals, 2.1.3.1
range of values, 3.1.1.3
NUMBER subtypes, 3.1.1.3.1
NUMERIC
NUMBER subtype, 3.1.1.3.1
numeric literals, 2.1.3.1
PL/SQL datatypes, 2.1.3.1
NVL function
treatment of nulls, 2.6.4.1

O

obfuscating
PL/SQL code, A
understanding, A.1
obfuscation
CREATE_WRAPPED function, A.3
DBMS_DDL package, A.3
hiding PL/SQL code, A
limitations, A.1.2
recommendations, A.1.1
tips, A.1.1
understanding, A.1
using DBMS_DDL CREATE_WRAPPED function, A.3.1
viewing source, A.1, A.3.1
WRAP function, A.3
wrap utility, A.2
object constructors
calling in PL/SQL, 12.2.2
passing parameters to in PL/SQL, 12.2.2
object methods
calling in PL/SQL, 12.2.2
object type declaration
syntax, 13
object types
declaring in a PL/SQL block, 12.1.1
defining in PL/SQL, 12.1
initializing in PL/SQL, 12.1, 12.1.2
overview, 1.2.10.4
using with invoker's rights subprograms, 8.9.10
using with PL/SQL, 12
using with PL/SQL collections, 12.4
object-oriented programming
with PL/SQL, 12
ONLY parameter
with READ to set transactions, 13
on-the-fly wrapping
DBMS_DDL package, A
new features, Preface
OPEN FOR statement
dynamic string length, 13
OPEN statement
explicit cursors, 6.2.2.2
links to examples, 13
syntax, 13
OPEN-FOR statement, 6.5.4.1
links to examples, 13
syntax, 13
OPEN-FOR-USING statement
syntax, 13
operators
comparison, 2.6.1.3
logical, 2.6.1
precedence, 2.6
relational, 2.6.1.4
optimizing
PL/SQL programs, 11.2
OR keyword
using with EXCEPTION, 10.8
Oracle By Example
PL/SQL new features, Preface
Oracle Metalink
native compilation, 11.9
spnc_commands, 11.9.4
Oracle Technology Network
best practices, 1, 11
code samples, Preface, 1
information on PL/SQL new features, Preface
native compilation, 11.9
SQL injection, 7.4, 13
table function examples, 11.10
table functions, 11.10
tuning information, 11
order of evaluation, 2.6, 2.6.1.1
OTHERS clause
exception handling, 13
OTHERS exception handler, 10.1, 10.8
OTN
technical articles, Preface
OUT parameter mode
subprograms, 8.6.3.2
overloading
and inheritance, 8.8.1
guidelines, 8.7.1
packaged subprograms, 9.5
restrictions, 8.7.2
subprogram names, 8.7

P

PACKAGE
with SQL CREATE statement, 1.2.8.2, 9.1
PACKAGE BODY
with SQL CREATE statement, 1.2.8.2, 9.1
package declaration
syntax, 13
packaged cursors, 9.9
packaged subprograms, 1.3.1.2
packages
advantages, 9.2
bodiless, 9.3
body, 9.1, 9.4, 13
call specification, 9.1
calling subprograms, 9.3.1
contents of, 9.1.1
creating, 1.2.8.2, 9.1
cursor specifications, 9.9
cursors, 9.9
declaration, 13
dot notation, 9.3.1
examples of features, 9.5
global variables, 9.5
guidelines for writing, 9.8
hidden declarations, 9.1
initializing, 9.4
links to examples, 13
modularity, 9.2
overloading subprograms, 9.5
overview, 1.2.8.2
overview of Oracle supplied, 9.7
private versus public objects, 9.5.1
product-specific, 9.7
product-specific for use with PL/SQL, 1.1.6
referencing, 9.3.1
restrictions on referencing, 9.3.1.1
scope, 9.3
serially reusable, 13
specification, 9.1, 13
specifications, 9.3
STANDARD package, 9.6
understanding, 9.1
visibility of contents, 9.1
PARALLE_ENABLE option
FUNCTION, 13
PARALLEL_ENABLE option
use with functions, 8.4
parameter passing
by reference, 8.13
by value, 8.13
in dynamic SQL, 7.2.1
parameters
actual, 6.4.2
actual versus formal, 8.6.1
aliasing, 8.13
cursor, 6.4.2
default values, 8.6.4
formal, 6.4.2
IN mode, 8.6.3.1
IN OUT mode, 8.6.3.3
in PL/SQL subprograms, 8.3
modes, 8.6.3
OUT mode, 8.6.3.2
summary of modes, 8.6.3.4
parentheses, 2.6
pattern matching, 2.6.1.6
performance
avoid memory overhead, 11.3.2
avoiding problems, 11.3
improving with PL/SQL, 1.1.2
performance. See also tuning
physical rowids, 3.1.2.4
pipe, 9.7.3
PIPE ROW statement
for returning rows incrementally, 11.10.4
PIPELINED
function option, 11.10.2, 13
pipelined functions
exception handling, 11.10.11
fetching from results of, 11.10.7
for querying a table, 11.10.1
overview, 11.10.1
passing data with cursor variables, 11.10.8
performing DML operations inside, 11.10.9
performing DML operations on, 11.10.10
returning results from, 11.10.4
transformation of data, 11.10
transformations, 11.10.3
writing, 11.10.2
pipelines
between table functions, 11.10.5
returning results from table functions, 11.10.4
support collection types, 11.10.2
using table functions, 11.10.3
writing table functions, 11.10.2
pipelining
definition, 11.10.1
placeholders
duplicate, 7.4.5
PLS_INTEGER datatype, 3.1.1.4
compared to BINARY_INTEGER, Preface
new features, Preface
overflow condition, 3.1.1.4
range update, Preface
PL/SQL
advantages, 1.1
anonymous blocks, 1.2.1
architecture, 1.3
assigning Boolean values, 2.5.1
assigning query result to variable, 2.5.2
assigning values to variables, 2.5
best practices information on OTN, Preface
blocks, 13
structure, 1.2.1
CASE expressions, 2.6.3
character sets, 2.1
collection types, 5
collections
overview, 1.2.10.2
comments, 2.1.4
comparisons, 2.6
compiler limitations, C
compiler parameter settings, 11.1, 11.2, 11.9.7
compiler parameters, 11.1
compile-time warnings, 10.9
compiling PL/SQL code for native execution, 11.9
conditional compilation, 1.2.7, 2.7
constants, 1.2.2
control structures, 1.2.6, 4.1
creating Web applications and pages, 2.8
data abstraction, 1.2.10
datatypes, 3
debugging with JDeveloper tutorial on Oracle by Example, Preface
declarations
constants, 2.2
demos, Preface
displaying output, 1.2.2.2, 9.7.2
engine, 1.3
environment, 9.6
error handling
overview, 1.2.11
errors, 10
exceptions, 10
expressions, 2.6
functions, 2.9, 8
hiding or obfuscating source code, A
input data, 1.2.9
keywords, D
lexical units, 2.1
limitations of programs, C
limits on programs, C
literals, 2.1.3
logical operators, 2.6.1
name resolution, B.1
naming conventions, 2.3
new features, Preface
Oracle By Example tutorial, Preface
output data, 1.2.9
performance
advantage, 1.1.2
performance problems, 11.3
portability, 1.1.4
procedural aspects, 1.2
procedures, 8
profiling and tracing programs, 11.4
querying data, 6.3
recompiling, 10.9.2
records
overview, 1.2.10.3
reserved words, D
sample programs, Preface
scope of identifiers, 2.4
Server Pages (PSPs), 2.8.2
SQL support, 6.1
statements, 13
subprograms, 8
calling, 1.3.1.2
syntax of language elements, 13
transaction processing, 6.7
tuning code, 11.2.1
tuning computation-intensive programs, 11.6
tuning dynamic SQL programs, 11.7
using dynamic SQL, 7.1
using NOCOPY for tuning, 11.8
using transformation pipelines, 11.10
variables, 1.2.2
warning messages, 10.9.1
Web applications, 2.8.1
writing reusable code, 1.2.8
PLSQL datatypes
numeric literals, 2.1.3.1
PLSQL_CCFLAGS initialization parameter
conditional compilation, 2.7.1.7, 2.7.1.7
use with conditional compilation, 2.7.1.5
plsql_code_type column
native compilation, 11.9.7
PLSQL_CODE_TYPE initialization parameter
setting PL/SQL native compilation, 11.9.5.3
use with conditional compilation, 2.7.1.5
PLSQL_DEBUG initialization parameter
use with conditional compilation, 2.7.1.5
PLSQL_LINE flag
use with conditional compilation, 2.7.1.5
PLSQL_NATIVE_LIBRARY_DIR initialization parameter
for native compilation, 11.9.5.1
Real Application Clusters with native compilation, 11.9.3.2
PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT initialization parameter
for native compilation, 11.9.5.2
PLSQL_OPTIMIZE_LEVEL initialization parameter
optimizing PL/SQL programs, 11.2
use with conditional compilation, 2.7.1.5
PLSQL_UNIT flag
use with conditional compilation, 2.7.1.5
PLSQL_WARNINGS initialization parameter, 10.9
use with conditional compilation, 2.7.1.5
pointers
REF CIRSOR, 6.5.1
portability, 1.1.4
POSITIVE
BINARY_INTEGER subtype, 3.1.1.1.1
POSITIVE and POSITIVEN subtypes, 3.1.1.1.1
POSITIVEN
BINARY_INTEGER subtype, 3.1.1.1.1
PRAGMA
compiler directive with AUTONOMOUS_TRANSACTION, 13, 13
compiler directive with AUTONOMOUS_TRANSACTION for procedures, 13
compiler directive with EXCEPTION_INIT, 13
compiler directive with RESTRICT_REFERENCES, 13
compiler directive with SERIALLY_REUSABLE, 13, 13
pragmas
AUTONOMOUS_TRANSACTION, 6.8.2
compiler directives, 10.4.3
EXCEPTION_INIT, 10.4.3
RESTRICT_REFERENCES, 6.8.5, 7.4.10, 8.12
precedence, operator, 2.6
precision of digits
specifying, 3.1.1.3
predefined exceptions
raising explicitly, 10.5.1
redeclaring, 10.4.5
predicates, 6.1.5
PRIOR method
collections, 5.8.5, 13
PRIOR row operator, 6.1.4
private objects
packages, 9.5.1
PROCEDURE
with CREATE statement, 1.2.8.1, 1.3.1.2, 8.1
procedure declaration
syntax, 13
procedures
body, 8.3, 13
calling, 1.2.8.2, 8.3
creating, 1.2.8.1, 1.3.1.2, 8.1
declaration, 13
in PL/SQL, 8
links to examples, 13
parts, 8.3
recompiling with ALTER PROCEDURE, 10.9.3
specification, 8.3
understanding PL/SQL, 8.3
productivity, 1.1.3
program units, 1.2.8
PROGRAM_ERROR exception, 10.3
propagation
exceptions in PL/SQL, 10.6
pseudocolumns
CURRVAL, 6.1.4
LEVEL, 6.1.4
NEXTVAL, 6.1.4
ROWID, 6.1.4
ROWNUM, 6.1.4
SQL, 6.1.4
UROWID, 6.1.4
use in PL/SQL, 6.1.4
public objects
packages, 9.5.1
purity rules, 8.12
PUT_LINE
displaying output with, 1.2.2.2

Q

qualifiers
using subprogram names as, 2.3
when needed, 2.3, 2.4
query work areas, 6.5.1
querying data
BULK COLLECT clause, 6.3.2
cursor FOR loop, 6.3.3
implicit cursor FOR loop, 6.3.5
looping through multiple rows, 6.3.3
maintaining, 6.4.2
performing complicated processing, 6.3.4
SELECT INTO, 6.3.1
using explicit cursors, 6.3.4
using implicit cursors, 6.3.5
with PL/SQL, 6.3
work areas, 6.5.1
quoted identifiers, 2.1.2.3

R

RAISE statement
exceptions in PL/SQL, 10.5.1
links to examples, 13
syntax, 13
using in exception handler, 10.7, 10.8
raise_application_error procedure
for raising PL/SQL exceptions, 10.4.4
raising an exception
in PL/SQL, 10.5
range operator, 4.3.6
RAW datatype, 3.1.2.3
converting, 3.3.5
maximum length, 3.1.2.3
READ ONLY parameter
setting transactions, 13
transactions, 6.7.6
READ WRITE parameter
setting transactions, 13
readability, 2.1
with NULL statement, 4.4.2
read-only transaction, 6.7.6
REAL
NUMBER subtype, 3.1.1.3.1
Real Application Clusters
and PL/SQL native compilation, 11.9.3.2
with native compilation, 11.9.3.2
recompiling
functions, packages, and procedures, 10.9.2
RECORD datatype, 5.1
record definition
syntax, 13
records
%ROWTYPE, 6.3.6
assigning values, 5.11
bulk-binding collections of, 5.11.5
comparing, 5.11.1
declaring, 5.10
defining, 5.10
definition, 1.2.5.2, 13
group of fields, 5.1.2
group of related data items, 5.1
implicit declaration, 6.3.6
inserting, 5.11.2
links to examples, 13
manipulating, 5.10.1
nesting, 5.10
overview, 1.2.10.3
passing as parameters, 5.10.1
restriction on assignments, 5.11
restrictions on inserts and updates of, 5.11.4
returning into, 5.11.3
ROWTYPE attribute, 5.1.2
updating, 5.11.3
using as function return values, 5.10.1
recursion
using with PL/SQL subprograms, 8.10
REF CURSOR datatype, 6.5.1
cursor variables, 6.5
defining, 6.5.3
using with cursor subqueries, 6.6.3
REF CURSOR variables
as parameters to table functions, 11.10.8
predefined SYS_REFCURSOR type, 11.10.8
REF function
manipulating objects in PL/SQL, 12.2.4
reference datatypes, 3.1
references
external, 8.9.2
resolving external, 8.9.4
referencing
collections, 5.4
referencing elements
allowed subscript ranges, 5.4.1
regular expression functions
REGEXP_LIKE, 6.2.2.3
relational operators, 2.6.1.4
remote access indicator, 2.3
REPEAT UNTIL structure
PL/SQL equivalent, 4.3.5
REPLACE function
treatment of nulls, 2.6.4.1
reraising an exception, 10.7
reserved words
list of PL/SQL, D
PL/SQL, D
syntactic meaning in PL/SQL, 2.1.2.1
resolution
name, 2.3
references to names, B.1
RESTRICT_REFERENCES pragma, 8.12
links to examples, 13
syntax, 13
using with autonomous functions, 6.8.5
using with dynamic SQL, 7.4.10
restricted rowids, 3.1.2.4.1
restrictions
cursor expressions, 6.6.1
cursor variables, 6.5.7
overloading subprograms, 8.7.2
result sets, 6.2.2.2
RETURN clause
cursor, 9.9
cursor declaration, 13
FUNCTION, 13
functions, 8.4
RETURN statement
functions, 8.4.1
links to examples, 13
syntax, 13
return types
overloading, 8.7.2
REF CURSOR, 6.5.3
return values
functions, 8.4
RETURNING clause
links to examples, 13
syntax, 13
with a record variable, 5.11.3
with dynamic SQL, 7.2
returns
bulk, 11.5.2.3
REUSE SETTINGS clause
with compiler parameters, 11.1
REVERSE
with LOOP counter, 4.3.6
REVERSE option
LOOP, 13
RNDS option
RESTRICT_REFERENCES, 13
RNPS option
RESTRICT_REFERENCES, 13
ROLLBACK statement, 6.7.2
effect on savepoints, 6.7.3
links to examples, 13
syntax, 13
rollbacks
implicit, 6.7.4
of FORALL statement, 11.5.1.1
routines
external, 8.11
row locks
with FOR UPDATE, 6.7.7
row operators, 6.1.5
ROWCOUNT cursor attribute
explicit, 6.2.2.6
implicit, 6.2.1.1
ROWID
pseudocolumn, 6.1.4
ROWID datatype, 3.1.2.4
rowids, 3.1.2.4
ROWIDTOCHAR function, 6.1.4
ROWNUM
pseudocolumn, 6.1.4
ROWTYPE attribute
declaring, 1.2.5.2
effect of default value, 2.2.5
effect of NOT NULL constraint, 2.2.5
inherited properties from columns, 13
links to examples, 13
records, 5.10
syntax, 13
using, 2.2.5
with SUBTYPE, 3.2.1
ROWTYPE_MISMATCH exception, 10.3
RPC (remote procedure call)
and exceptions, 10.6
rules
purity, 8.12
run-time errors
PL/SQL, 10

S

samples
PL/SQL, Preface
SAVE EXCEPTIONS clause
FORALL, 13
SAVEPOINT statement, 6.7.3
links to examples, 13
syntax, 13
savepoints
reusing names, 6.7.3
scalar datatypes, 3.1
scale
specifying, 3.1.1.3
scientific notation, 2.1.3.1
scope, 2.4
collection, 5.3
definition, 2.4
exceptions in PL/SQL, 10.4.2
explicit cursor, 6.2.2.1
explicit cursor parameter, 6.2.2.1
identifier, 2.4
loop counter, 4.3.6.3
package, 9.3
searched CASE expression, 2.6.3.2
searched CASE statement, 4.2.4.1
SECOND
datatype field, 3.1.6
security
SQL injection, 7.4, 13
SELECT INTO statement
links to examples, 13
returning one row, 6.3.1
syntax, 13
selector, 2.6.3.1
SELF_IS_NULL exception, 10.3
semantics
assignment, 3.4.1
blank-padding, 3.4.2
non-blank-padding, 3.4.2
string comparison, 3.4.2
separators, 2.1.1
sequences
CURRVAL and NEXTVAL, 6.1.4
SERIALLY_REUSABLE pragma
examples, 13
syntax, 13
use with packages, 13
Server Pages (PSPs)
PL/SQL, 2.8.2
SERVEROUTPUT
displaying output from PL/SQL, 1.2.9
setting ON to display output, 9.7.2
SET clause
UPDATE, 13
set operators, 6.1.5
SET TRANSACTION statement, 6.7.6
links to examples, 13
syntax, 13
short-circuit evaluation, 2.6.1.2
side effects, 8.6.3
controlling, 8.12
SIGNTYPE
BINARY_INTEGER subtype, 3.1.1.1.1
SIGNTYPE subtype, 3.1.1.1.1
simple CASE expression, 2.6.3.1
single-line comments, 2.1.4.1
size limit
varrays, 5.3
SMALLINT
NUMBER subtype, 3.1.1.3.1
spaces
where allowed, 2.1
sparse collections
nested tables versus arrays, 5.1.1.1
specification
call, 9.1
cursor, 9.9
functions, 8.4
package, 9.3
packages, 13
procedure, 8.3
spnc_commands
Oracle Metalink, 11.9.4
SQL
comparisons operators, 6.1.5
data manipulation operations, 6.1.1
define variables and data manipulation statements, 6.1.1
DML operations, 6.1.1
dynamic, 1.1.1, 7.1
exceptions raised by data manipulation statements, 6.1.1
injection, 7.4, 13
issuing from PL/SQL, 6.1
no rows returned with data manipulation statements, 6.1.1
pseudocolumns, 6.1.4
static, 1.1.1
SQL cursor
links to examples, 13
syntax, 13
SQL injection, 7.4, 13
Oracle Technology Network, 7.4, 13
SQLCODE function
links to examples, 13
syntax, 13
using with exception handlers, 10.8.4
SQLERRM function
links to examples, 13
syntax, 13
using with BULK_EXCEPTIONS ERROR_CODE field, 11.5.1.3
using with exception handlers, 10.8.4
standalone subprograms, 1.3.1.2
STANDARD package
defining PL/SQL environment, 9.6
START WITH clause, 6.1.4
statement terminator, 13
statements
assignment, 13
CASE, 13
CLOSE, 6.2.2.5, 6.5.4.4, 13
COMMIT, 13
DELETE, 13
EXECUTE IMMEDIATE, 7.2, 13
EXIT, 13
FETCH, 6.2.2.3, 6.5.4.3, 13
FORALL, 11.5.1, 13
FOR-LOOP, 13
GOTO, 13
IF, 13
INSERT, 13
LOCK TABLE, 13
LOOP, 13
MERGE, 13
NULL, 13
OPEN, 6.2.2.2, 13
OPEN-FOR, 6.5.4.1, 13
OPEN-FOR-USING, 13
PL/SQL, 13
RAISE, 13
RETURN, 13
ROLLBACK, 13
SAVEPOINT, 13
SELECT INTO, 13
SET TRANSACTION, 13
UPDATE, 13
WHILE-LOOP, 13
static constants
conditional compilation, 2.7.1.6.4
static expressions
boolean, 2.7.1.6
PLS_INTEGER, 2.7.1.6
use with conditional compilation, 2.7.1.6
VARCHAR2, 2.7.1.6
static SQL, 1.1.1
STEP clause
equivalent in PL/SQL, 4.3.6.1
STORAGE_ERROR exception, 10.3
raised with recursion, 8.10.1
store tables, 5.2.2
stored subprograms
in Oracle database, 1.3.1.2
string comparison semantics, 3.4.2
string literals, 2.1.3.3
NCHAR, 2.1.3.3
STRING subtype, 3.1.2.5.1
subprograms
actual versus formal parameters, 8.6.1
advantages in PL/SQL, 8.2
AUTHID clause, 8.9, 8.9.2
calling external, 8.11
calling from SQL*Plus, 1.3.1.2, 1.3.1.2
calling with parameters, 8.6.2
controlling side effects, 8.12
current user during execution, 8.9.3
declaring nested, 8.5
declaring PL/SQL, 1.2.4
default parameter modes, 8.6.4
definer's rights, 8.9
EXECUTE privilege, 8.9.6
external references, 8.9.2
granting privileges on invoker's rights, 8.9.6
guidelines for overloading, 8.7.1
how calls are resolved, 8.8
IN OUT parameter mode, 8.6.3.3
IN parameter mode, 8.6.3.1
in PL/SQL, 8
invoker's rights, 8.9
local, 1.3.1.2
mixed notation parameters, 8.6.2
named parameters, 8.6.2
OUT parameter mode, 8.6.3.2
overloading and inheritance, 8.8.1
overloading names, 8.7
overriding name resolution, 8.9.5
packaged, 1.3.1.2
parameter aliasing, 8.13
parameter modes, 8.6.3, 8.6.3.4
passing parameter by value, 8.13
passing parameters, 8.6
passing parameters by reference, 8.13
positional parameters, 8.6.2
procedure versus function, 8.4
recursive, 8.10.1
resolving external references, 8.9.4
restrictions on overloading, 8.7.2
roles with invoker's rights, 8.9.7
standalone, 1.3.1.2
stored, 1.3.1.2
understanding PL/SQL, 8.1
using database links with invoker's rights, 8.9.9
using recursion, 8.10
using triggers with invoker's rights, 8.9.8
using views with invoker's rights, 8.9.8
subqueries
correlated, 6.4.1
using in PL/SQL, 6.4
SUBSCRIPT_BEYOND_COUNT exception, 10.3
SUBSCRIPT_OUTSIDE_LIMIT exception, 10.3
substitutability of object types
with overloading, 8.8.1
SUBSTR function
using with SQLERRM, 10.8.4
subtypes
BINARY_INTEGER, 3.1.1.1.1
CHARACTER, 3.1.2.1.1
compatibility, 3.2.2.1
constrained versus unconstrained, 3.2
defining, 3.2.1
NATURAL and NATUARALN, 3.1.1.1.1
NUMBER, 3.1.1.3.1
PL/SQL, 3.2
POSITIVE and POSITIVEN, 3.1.1.1.1
SIGNTYPE, 3.1.1.1.1
STRING, 3.1.2.5.1
using, 3.2.2
VARCHAR, 3.1.2.5.1
synonyms
name resolution, 8.9.5
syntax
assignment statement, 13
AUTONOMOUS_TRANSACTION pragma, 13
BEGIN, 13
block declaration, 13
CASE statement, 13
CLOSE statement, 13
collection definition, 13
collection method, 13
comment, 13
constant, 13
cursor attributes, 13
cursor declaration, 13
cursor variables, 13
DECLARE, 13
DELETE statement, 13
diagram reading, 13
END, 13
EXCEPTION, 13
exception definition, 13
EXCEPTION_INIT pragma, 13
EXECUTE IMMEDIATE statement, 13
EXIT statement, 13
expression, 13
FETCH statement, 13
FORALL statement, 13
FOR-LOOP statement, 13
function declaration, 13
GOTO statement, 13
IF statement, 13
INSERT statement, 13
label, 13
literal declaration, 13
LOCK TABLE statement, 13
LOOP statement, 13
NULL statement, 13
object type declaration, 13
of PL/SQL language elements, 13
OPEN statement, 13
OPEN-FOR statement, 13
OPEN-FOR-USING statement, 13
package declaration, 13
procedure declaration, 13
RAISE statement, 13
record definition, 13
RESTRICT_REFERENCES pragma, 13
RETURN statement, 13
RETURNING clause, 13
ROLLBACK statement, 13
ROWTYPE attribute, 13
SAVEPOINT statement, 13
SELECT INTO statement, 13
SERIALLY_REUSABLE pragma, 13
SET TRANSACTION statement, 13
SQL cursor, 13
SQLCODE function, 13
SQLERRM function, 13
TYPE attribute, 13
UPDATE statement, 13
variable, 13
WHILE-LOOP statement, 13
SYS_INVALID_ROWID exception, 10.3
SYS_REFCURSOR type, 11.10.8

T

TABLE datatype, 5.3
table functions
examples on Oracle Technology Network, 11.10
exception handling, 11.10.11
fetching from results of, 11.10.7
for querying, 11.10.1
information on Oracle Technology Network, 11.10
organizing multiple calls to, 11.10.6
passing data with cursor variables, 11.10.8
performing DML operations inside, 11.10.9
performing DML operations on, 11.10.10
pipelining data between, 11.10.5
returning results from, 11.10.4
setting up transformation pipelines, 11.10
using transformation pipelines, 11.10.3
writing transformation pipelines, 11.10.2
TABLE operator
manipulating objects in PL/SQL, 12.3.1
tabs, 2.1
terminator, statement, 2.1.1
ternary operators, 2.6
THEN clause
using, 4.2.1
with IF statement, 4.2.1
TIMEOUT_ON_RESOURCE exception, 10.3
TIMESTAMP datatype, 3.1.6.2
TIMESTAMP WITH LOCAL TIME ZONE datatype, 3.1.6.4
TIMESTAMP WITH TIME ZONE datatype, 3.1.6.3
TIMEZONE_ABBR
datatype field, 3.1.6
TIMEZONE_HOUR
datatype field, 3.1.6
TIMEZONE_MINUTES
datatype field, 3.1.6
TIMEZONE_REGION
datatype field, 3.1.6
TOO_MANY_ROWS exception, 10.3
trailing blanks, 3.4.3
transactions, 6.1.2
autonomous in PL/SQL, 6.8
committing, 6.7.1
context, 6.8.2.2
ending properly, 6.7.5
processing in PL/SQL, 6.1.2, 6.7
properties, 6.7.6
read-only, 6.7.6
restrictions, 6.7.6.1
rolling back, 6.7.2
savepoints, 6.7.3
visibility, 6.8.2.3
triggers
as a stored PL/SQL subprogram, 1.3.1.3
autonomous, 6.8.4
TRIM method
collections, 5.8.7, 13
TRUE value, 2.1.3.4
TRUST option
RESTRICT_REFERENCES, 13
tuning
allocate large VARCHAR2 variables, 11.3.2.1
avoid memory overhead, 11.3.2
compiling PL/SQL code for native execution, 11.9
computation-intensive programs, 11.6
do not duplicate built-in functions, 11.3.1.4
dynamic SQL programs, 11.7
group related subprograms into a package, 11.3.2.2
guidelines for avoiding PL/SQL performance problems, 11.3
improve code to avoid compiler warnings, 11.3.2.4
information on Oracle Technology Network, 11
make function calls efficient, 11.3.1.2
make loops efficient, 11.3.1.3
make SQL statements efficient, 11.3.1.1
optimizing PL/SQL programs, 11.2
pin packages in the shared memory pool, 11.3.2.3
PL/SQL code, 11.2.1
profiling and tracing, 11.4
reducing loop overhead, 11.5
reorder conditional tests to put least expensive first, 11.3.1.5
use BINARY_FLOAT or BINARY_DOUBLE for floating-point arithmetic, 11.3.1.8
use PLS_INTEGER for integer arithmetic, 11.3.1.7
using DBMS_PROFILE and DBMS_TRACE, 11.4
using FORALL, 11.5.1
using NOCOPY, 11.8
using transformation pipelines, 11.10
TYPE attribute
declaring, 1.2.5.1
effect of default value, 2.2.4
effect of NOT NULL constraint, 2.2.4
inherited properties from column, 13
links to examples, 13
syntax, 13
using, 2.2.4
with SUBTYPE, 3.2.1
TYPE definition
associative arrays, 5.3
collection, 5.3
collection types, 5.3
nested tables, 5.3
RECORD, 5.10
REF CURSOR, 6.5.3
VARRAY, 5.3

U

unary operators, 2.6
underscores, 2.1.2
unhandled exceptions
catching, 10.8.5
propagating, 10.6
uninitialized object
how treated in PL/SQL, 12.1.2
UNION ALL set operator, 6.1.5
UNION set operator, 6.1.5
universal rowids, 3.1.2.4
UPDATE statement
links to examples, 13
syntax, 13
with a record variable, 5.11.3
URL (uniform resource locator), 9.7.6
UROWID
pseudocolumn, 6.1.4
UROWID datatype, 3.1.2.4
USE ROLLBACK SEGMENT parameter
setting transactions, 13
user-defined
exceptions in PL/SQL, 10.4
records, 5.1
subtypes, 3.2
USING clause
EXECUTE IMMEDIATE, 13
with dynamic SQL, 7.2
with EXECUTE IMMEDIATE, 13
with OPEN FOR statement, 13
UTF8 character encoding, 3.1.3.1
UTL_FILE package, 9.7.5
UTL_HTTP package, 9.7.6
UTL_SMTP package, 9.7.7
utlirp.sql script
for PL/SQL native compilation, 11.9.7
utlrp.sql script
for PL/SQL native compilation, 11.9.9

V

V$RESERVED_WORDS view
listing of reserved words and keywords, D
VALUE function, 12.2.2
VALUE_ERROR exception, 10.3
VALUES clause
INSERT, 13
VALUES OF clause, 11.5.1
FORALL, 13
VARCHAR subtype, 3.1.2.5.1
VARCHAR2 datatype, 3.1.2.5
differences with CHAR, 3.4
variables
assigning query result to, 2.5.2
assigning values, 1.2.2.2, 2.5
bind, 1.2.2.3, 13
declaring, 1.2.2.1, 2.2
declaring PL/SQL, 1.2.5
global, 9.5
host, 13
initializing, 2.5
links to examples, 13
passing as IN OUT parameter, 1.2.2.2
REF CURSOR datatype, 6.5
syntax, 13
understanding PL/SQL, 1.2.2
variable-size arrays (varrays)
understanding, 5.1.1
VARRAY datatype, 5.1.1.2, 5.3
varrays
size limit, 5.3
syntax, 13
TYPE definition, 5.3
understanding, 5.1.1
versus nested tables, 5.2.2
visibility
of package contents, 9.1
transaction, 6.8.2.3
versus scope, 2.4

W

warning messages
controlling PL/SQL, 10.9.2
Web applications
creating with PL/SQL, 2.8
Web server pages
creating with PL/SQL, 2.8
WHEN clause
exception handling, 13
exceptions, 10.8
using, 4.3.3
WHERE CURRENT OF clause
DELETE statement, 13
UPDATE, 13
WHILE-LOOP statement
overview, 1.2.6.2
syntax, 13
using, 4.3.5
wildcards, 2.6.1.6
WNDS option
RESTRICT_REFERENCES, 13
WNPS option
RESTRICT_REFERENCES, 13
words
reserved in PL/SQL, D
work areas
queries, 6.5.1
WRAP function
obfuscation, A.3
wrap utility
limitations, A.1.2
obfuscating PL/SQL code, A
obfuscation of PL/SQL code, A.2
running, A.2.2
wrapped
PL/SQL source code, A
wrapping
DBMS_DDL package, A.3
dynamically, Preface, A
limitations, A.1.2
obfuscating code, A
on-the-fly, Preface, A
recommendations, A.1.1
tips, A.1.1
understanding, A.1
viewing source, A.1, A.3.1
with CREATE_WRAPPED, A.3.1
WRITE parameter
with READ to set transactions, 13

Y

YEAR
datatype field, 3.1.6

Z

ZERO_DIVIDE exception, 10.3
ZONE
part of TIMESTAMP datatype, 3.1.6.3