Preface |
|
xiii | |
Part I. Programming in PL/SQL |
|
|
|
3 | (26) |
|
|
3 | (1) |
|
|
4 | (3) |
|
|
7 | (3) |
|
|
10 | (11) |
|
Resources for PL/SQL Developers |
|
|
21 | (4) |
|
|
25 | (4) |
|
Creating and Running PL/SQL Code |
|
|
29 | (31) |
|
|
30 | (14) |
|
Performing Essential PL/SQL Tasks |
|
|
44 | (7) |
|
Oracle's PL/SQL-Based Developer Tools |
|
|
51 | (2) |
|
Calling PL/SQL from Other Languages |
|
|
53 | (6) |
|
|
59 | (1) |
|
|
60 | (25) |
|
|
60 | (9) |
|
|
69 | (1) |
|
|
70 | (5) |
|
|
75 | (2) |
|
|
77 | (1) |
|
|
78 | (1) |
|
|
79 | (1) |
|
|
80 | (5) |
Part II. PL/SQL Program Structure |
|
|
Conditional and Sequential Control |
|
|
85 | (23) |
|
|
85 | (8) |
|
|
93 | (7) |
|
|
100 | (5) |
|
|
105 | (3) |
|
Iterative Processing with Loops |
|
|
108 | (18) |
|
|
108 | (3) |
|
|
111 | (2) |
|
|
113 | (1) |
|
|
114 | (3) |
|
|
117 | (3) |
|
|
120 | (1) |
|
Tips for Iterative Processing |
|
|
121 | (5) |
|
|
126 | (27) |
|
How PL/SQL Deals with Errors |
|
|
126 | (3) |
|
|
129 | (8) |
|
|
137 | (3) |
|
|
140 | (13) |
Part III. PL/SQL Program Data |
|
|
Working with Program Data |
|
|
153 | (23) |
|
|
153 | (2) |
|
Overview of PL/SQL Datatypes |
|
|
155 | (5) |
|
|
160 | (7) |
|
Programmer-Defined Subtypes |
|
|
167 | (1) |
|
Conversion Between Datatypes |
|
|
168 | (8) |
|
|
176 | (50) |
|
The Impact of Character Sets |
|
|
176 | (9) |
|
|
185 | (5) |
|
|
190 | (5) |
|
|
195 | (27) |
|
|
222 | (4) |
|
|
226 | (30) |
|
|
226 | (7) |
|
|
233 | (13) |
|
|
246 | (10) |
|
|
256 | (66) |
|
|
257 | (9) |
|
Date and Timestamp Conversions |
|
|
266 | (28) |
|
|
294 | (11) |
|
|
305 | (17) |
|
|
322 | (73) |
|
|
322 | (14) |
|
|
336 | (5) |
|
Declaring Collection Types and Collections |
|
|
341 | (4) |
|
Where Collections Can Be Used |
|
|
345 | (4) |
|
Collection Built-Ins (Methods) |
|
|
349 | (9) |
|
|
358 | (26) |
|
Collection Pseudo-Functions |
|
|
384 | (7) |
|
|
391 | (1) |
|
Choosing a Collection Type |
|
|
392 | (3) |
|
|
395 | (44) |
|
|
395 | (2) |
|
|
397 | (1) |
|
The UROWID and ROWID Datatypes |
|
|
397 | (5) |
|
|
402 | (3) |
|
|
405 | (23) |
|
|
428 | (11) |
Part IV. SQL in PL/SQL |
|
|
DML and Transaction Management |
|
|
439 | (37) |
|
|
440 | (10) |
|
Bulk DML with the FORALL Statement |
|
|
450 | (9) |
|
|
459 | (4) |
|
|
463 | (13) |
|
|
476 | (58) |
|
|
477 | (9) |
|
Working with Implicit Cursors |
|
|
486 | (6) |
|
Working with Explicit Cursors |
|
|
492 | (15) |
|
|
507 | (5) |
|
|
512 | (5) |
|
|
517 | (13) |
|
Cursor Expressions (Oracle9i) |
|
|
530 | (4) |
|
Dynamic SQL and Dynamic PL/SQL |
|
|
534 | (35) |
|
|
535 | (4) |
|
Multirow Queries with Cursor Variables |
|
|
539 | (7) |
|
|
546 | (6) |
|
Working with Objects and Collections |
|
|
552 | (2) |
|
Building Applications with NDS |
|
|
554 | (8) |
|
|
562 | (1) |
|
Comparing NDS and DBMS_SQL |
|
|
563 | (6) |
Part V. PL/SQL Application Construction |
|
|
Procedures, Functions, and Parameters |
|
|
569 | (52) |
|
|
570 | (1) |
|
|
571 | (4) |
|
|
575 | (7) |
|
|
582 | (12) |
|
|
594 | (4) |
|
|
598 | (5) |
|
|
603 | (1) |
|
|
604 | (15) |
|
|
619 | (2) |
|
|
621 | (32) |
|
|
621 | (7) |
|
Rules for Building Packages |
|
|
628 | (7) |
|
Rules for Calling Packaged Elements |
|
|
635 | (1) |
|
Working with Package Data |
|
|
636 | (9) |
|
|
645 | (6) |
|
Packages and Object Types |
|
|
651 | (2) |
|
|
653 | (57) |
|
|
654 | (23) |
|
|
677 | (9) |
|
|
686 | (7) |
|
|
693 | (5) |
|
|
698 | (8) |
|
|
706 | (4) |
|
Managing PL/SQL Applications |
|
|
710 | (45) |
|
Managing and Analyzing Code in the Database |
|
|
711 | (5) |
|
|
716 | (2) |
|
|
718 | (3) |
|
|
721 | (7) |
|
Debugging PL/SQL Programs |
|
|
728 | (8) |
|
|
736 | (7) |
|
Improving Application Performance |
|
|
743 | (12) |
Part VI. Advanced PL/SQL Topics |
|
|
PL/SQL's Runtime Architecture |
|
|
755 | (60) |
|
|
756 | (10) |
|
|
766 | (10) |
|
PL/SQL's Use of Memory in the Oracle Server |
|
|
776 | (15) |
|
The Processing of Server-Side PL/SQL |
|
|
791 | (3) |
|
PL/SQL Code on the Client |
|
|
794 | (9) |
|
Execution Authority Models |
|
|
803 | (8) |
|
Hardware for PL/SQL: Bigger = Better? |
|
|
811 | (2) |
|
|
813 | (2) |
|
Object-Oriented Aspects of PL/SQL |
|
|
815 | (59) |
|
Introduction to Oracle's Object Features |
|
|
815 | (2) |
|
|
817 | (39) |
|
|
856 | (12) |
|
Maintaining Object Types and Object Views |
|
|
868 | (3) |
|
|
871 | (3) |
|
|
874 | (36) |
|
|
874 | (2) |
|
Getting Ready to Use Java in Oracle |
|
|
876 | (3) |
|
|
879 | (6) |
|
|
885 | (3) |
|
|
888 | (1) |
|
Managing Java in the Database |
|
|
889 | (2) |
|
|
891 | (5) |
|
Publishing and Using Java in PL/SQL |
|
|
896 | (14) |
|
|
910 | (27) |
|
Introduction to External Procedures |
|
|
911 | (3) |
|
The Oracle Net Configuration |
|
|
914 | (3) |
|
Creating an Oracle Library |
|
|
917 | (2) |
|
Writing the Call Specification |
|
|
919 | (10) |
|
Raising an Exception from the Called C Program |
|
|
929 | (3) |
|
|
932 | (3) |
|
Maintaining External Procedures |
|
|
935 | (2) |
Index |
|
937 | |