Advanced Search
Start Your Free Trial

Overview

Other Readers Also Read...

Top Sellers in this Category

Oracle PL/SQL Programming, 5th Edition

Oracle PL/SQL Programming, 5th Edition
by Steven Feuerstein; Bill Pribyl

Head First PHP & MySQL

Head First PHP & MySQL
by Lynn Beighley; Michael Morrison

Head First SQL

Head First SQL
by Lynn Beighley

This is the Safari online edition of the printed book.

This integrated learning solution teaches all the Oracle PL/SQL skills you need, hands-on, through real-world labs, extensive examples, exercises, and projects! Completely updated for Oracle 11g, Oracle PL/SQL by Example, Fourth Edition covers all the fundamentals, from PL/SQL syntax and program control through packages and Oracle 11g’s significantly improved triggers.

One step at a time, you’ll walk through every key task, discovering the most important PL/SQL programming techniques on your own. Building on your hands-on learning, the authors share solutions that offer deeper insights and proven best practices. End-of-chapter projects bring together all the techniques you’ve learned, strengthening your understanding through real-world practice.

This book’s approach fully reflects the authors’ award-winning experience teaching PL/SQL programming to professionals at Columbia University. New database developers and DBAs can use its step-by-step instructions to get productive fast; experienced PL/SQL programmers can use this book as a practical solutions reference. Coverage includes

        • Mastering basic PL/SQL concepts and general programming language fundamentals, and understanding SQL’s role in

          PL/SQL

        • Using conditional and iterative program control techniques, including the new CONTINUE and CONTINUE WHEN statements

        • Efficiently handling errors and exceptions

        • Working with cursors and triggers, including Oracle 11g’s powerful new compound triggers

        • Using stored procedures, functions, and packages to write modular code that other programs can execute

        • Working with collections, object-relational features, native dynamic SQL, bulk SQL, and other advanced PL/SQL capabilities

        • Handy reference appendices: PL/SQL formatting guide, sample database schema, ANSI SQL standards reference, and

          more

Benjamin Rosenzweig is a Software Development Manager at Misys. Previously he was a Principal Consultant at Oracle. His experience ranges from creating an electronic Tibetan—English Dictionary in Kathmandu, Nepal, to supporting presentation centers at Goldman Sachs and managing trading systems at TIAA-CREF. As an instructor at Columbia University’s Computer Technology and Application Program, he was awarded the Outstanding Teaching Award. Rosenzweig wrote and presented Oracle Forms Developer: The Complete Video Course, and coauthored Oracle Web Application Programming for PL/SQL Developers.

Elena Silvestrova Rakhimov is Senior Developer and Team Lead at Alea Software. She has more than fifteen years of experience in database development in a wide spectrum of enterprise and business environments, ranging from non-profit organizations to Wall Street. She has taught database programming at Columbia University.

Contents

Acknowledgments xiv

About the Authors xv

Introduction xvii

CHAPTER 1 PL/SQL Concepts 1

    LAB 1.1 PL/SQL in Client/Server Architecture 2

        1.1.1 Use PL/SQL Anonymous Blocks 8

        1.1.2 Understand How PL/SQL Gets Executed 10

    LAB 1.2 PL/SQL in SQL*Plus 12

        1.2.1 Use Substitution Variables 16

        1.2.2 Use the DBMS_OUTPUT.PUT_LINE Statement 17

Chapter 1 Try It Yourself 19

CHAPTER 2 General Programming Language

Fundamentals 21

    LAB 2.1 PL/SQL Programming Fundamentals 22

        2.1.1 Make Use of PL/SQL Language Components 23

        2.1.2 Make Use of PL/SQL Variables 24

        2.1.3 Handle PL/SQL Reserved Words 26

        2.1.4 Make Use of Identifiers in PL/SQL 27

        2.1.5 Make Use of Anchored Datatypes 28

        2.1.6 Declare and Initialize Variables 31

        2.1.7 Understand the Scope of a Block, Nested Blocks, and Labels 34

Chapter 2 Try It Yourself 37

CHAPTER 3 SQL in PL/SQL 39

    LAB 3.1 Making Use of DML in PL/SQL 40

        3.1.1 Use the Select INTO Syntax for Variable Initialization 41

        3.1.2 Use DML in a PL/SQL Block 42

        3.1.3 Make Use of a Sequence in a PL/SQL Block 44

    LAB 3.2 Making Use of SAVEPOINT 45

        3.2.1 Make Use of COMMIT, ROLLBACK, and SAVEPOINT in a PL/SQL Block 48

Chapter 3 Try It Yourself 51

CHAPTER 4 Conditional Control: IF Statements 53

    LAB 4.1 IF Statements 54

        4.1.1 Use the IF-THEN Statement 58

        4.1.2 Use the IF-THEN-ELSE Statement 62

    LAB 4.2 ELSIF Statements 65

        4.2.1 Use the ELSIF Statement 69

    LAB 4.3 Nested IF Statements 74

        4.3.1 Use Nested IF Statements 76

Chapter 4 Try It Yourself 80

CHAPTER 5 Conditional Control: CASE Statements 81

    LAB 5.1 CASE Statements 82

        5.1.1 Use the CASE Statement 89

        5.1.2 Use the Searched CASE Statement 91

    LAB 5.2 CASE Expressions 96

        5.2.1 Use the CASE Expression 100

    LAB 5.3 NULLIF and COALESCE Functions 103

        5.3.1 The NULLIF Function 107

        5.3.2 Use the COALESCE Function 109

Chapter 5 Try It Yourself 112

CHAPTER 6 Iterative Control: Part I 113

    LAB 6.1 Simple Loops 114

        6.1.1 Use Simple Loops with EXIT Conditions 118

        6.1.2 Use Simple Loops with EXIT WHEN Conditions 120

    LAB 6.2 WHILE Loops 124

        6.2.1 Use WHILE Loops 128

    LAB 6.3 Numeric FOR Loops 132

        6.3.1 Use Numeric FOR Loops with the IN Option 137

        6.3.2 Use Numeric FOR Loops with the REVERSE Option 139

Chapter 6 Try It Yourself 142

CHAPTER 7 Iterative Control: Part II 143

    LAB 7.1 The CONTINUE Statement 144

        7.1.1 Use the CONTINUE Statement 146

        7.1.2 Use the CONTINUE WHEN Condition 152

    LAB 7.2 Nested Loops 154

        7.2.1 Use Nested Loops 157

Chapter 7 Try It Yourself 161

CHAPTER 8 Error Handling and Built-in Exceptions 163

    LAB 8.1 Handling Errors 164

        8.1.1 Understand the Importance of Error Handling 167

    LAB 8.2 Built-in Exceptions 169

        8.2.1 Use Built-in Exceptions 174

Chapter 8 Try It Yourself 178

CHAPTER 9 Exceptions 179

    LAB 9.1 Exception Scope 180

        9.1.1 Understand the Scope of an Exception 183

    LAB 9.2 User-Defined Exceptions 188

        9.2.1 Use User-Defined Exceptions 193

    LAB 9.3 Exception Propagation 197

        9.3.1 Understand How Exceptions Propagate 203

        9.3.2 Reraise Exceptions 206

Chapter 9 Try It Yourself 209

CHAPTER 10 Exceptions: Advanced Concepts 211

    LAB 10.1 RAISE_APPLICATION_ERROR 212

        10.1.1 Use RAISE_APPLICATION_ERROR 215

    LAB 10.2 EXCEPTION_INIT Pragma 217

        10.2.1 USE the EXCEPTION_INIT Pragma 219

    LAB 10.3 SQLCODE and SQLERRM 222

        10.3.1 Use SQLCODE and SQLERRM 225

Chapter 10 Try It Yourself 227

CHAPTER 11 Introduction to Cursors 229

    LAB 11.1 Cursor Manipulation 230

        11.1.1 Make Use of Record Types 234

        11.1.2 Process an Explicit Cursor 235

        11.1.3 Make Use of Cursor Attributes 240

        11.1.4 Put It All Together 242

    LAB 11.2 Using Cursor FOR Loops and Nested Cursors 246

        11.2.1 Use a Cursor FOR Loop 247

        11.2.2 Process Nested Cursors 247

Chapter 11 Try It Yourself 252

CHAPTER 12 Advanced Cursors 253

    LAB 12.1 Using Parameters with Cursors and Complex Nested Cursors 254

        12.1.1 Use Parameters in a Cursor 255

        12.1.2 Use Complex Nested Cursors 255

    LAB 12.2 FOR UPDATE and WHERE CURRENT Cursors 258

        12.2.1 For UPDATE and WHERE CURRENT Cursors 258

CHAPTER 13 Triggers 263

    LAB 13.1 What Triggers Are 264

        13.1.1 Understand What a Trigger Is 272

        13.1.2 Use BEFORE and AFTER Triggers 274

    LAB 13.2 Types of Triggers 277

        13.2.1 Use Row and Statement Triggers 283

        13.2.2 Use INSTEAD OF Triggers 285

Chaper 13 Try It Yourself 290

CHAPTER 14 Compound Triggers 291

    LAB 14.1 Mutating Table Issues 292

        14.1.1 Understand Mutating Tables 296

    LAB 14.2 Compound Triggers 300

        14.2.1 Understand Compound Triggers 306

Chapter 14 Try It Yourself 313

CHAPTER 15 Collections 315

    LAB 15.1 PL/SQL Tables 316

        15.1.1 Use Associative Arrays 326

        15.1.2 Use Nested Tables 330

    LAB 15.2 Varrays 334

        15.2.1 Use Varrays 338

    LAB 15.3 Multilevel Collections 342

        15.3.1 Use Multilevel Collections 344

Chapter 15 Try It Yourself 348

CHAPTER 16 Records 349

    LAB 16.1 Record Types 350

        16.1.1 Use Table-Based and Cursor-Based Records 358

        16.1.2 Use User-Defined Records 362

    LAB 16.2 Nested Records 367

        16.2.1 Use Nested Records 369

    LAB 16.3 Collections of Records 373

        16.3.1 Use Collections of Records 374

Chapter 16 Try It Yourself 378

CHAPTER 17 Native Dynamic SQL 379

    LAB 17.1 EXECUTE IMMEDIATE Statements 380

        17.1.1 Use the EXECUTE IMMEDIATE Statement 387

    LAB 17.2 OPEN-FOR, FETCH, and CLOSE Statements 392

        17.2.1 Use OPEN-FOR, FETCH, and CLOSE Statements 395

Chapter 17 Try It Yourself 401

CHAPTER 18 Bulk SQL 403

    LAB 18.1 The FORALL Statement 404

        18.1.1 Use the FORALL Statement 413

    LAB 18.2 The BULK COLLECT Clause 422

        18.2.1 Use the BULK COLLECT Statement 428

Chapter 18 Try It Yourself 437

CHAPTER 19 Procedures 439

    LAB 19.1 Creating Procedures 441

        19.1.1 Create Procedures 441

        19.1.2 Query the Data Dictionary for Information on Procedures 443

    LAB 19.2 Passing Parameters into and out of Procedures 444

        19.2.1 Use IN and OUT Parameters with Procedures 445

Chapter 19 Try It Yourself 447

    Part 1 447

    Part 2 447

CHAPTER 20 Functions 449

    LAB 20.1 Creating and Using Functions 450

        20.1.1 Create Stored Functions 451

        20.1.2 Make Use of Functions 452

        20.1.3 Invoke Functions in SQL Statements 453

        20.1.4 Write Complex Functions 454

Chapter 20 Try It Yourself 455

CHAPTER 21 Packages 457

    LAB 21.1 The Benefits of Using Packages 458

        21.1.1 Create Package Specifications 460

        21.1.2 Create Package Bodies 462

        21.1.3 Call Stored Packages 464

        21.1.4 Create Private Objects 465

        21.1.5 Create Package Variables and Cursors 469

    LAB 21.2 Cursor Variables 471

        21.2.1 Make Use of Cursor Variables 475

    LAB 21.3 Extending the Package 480

        21.3.1 Extend the Package 480

Chapter 21 Try It Yourself 493

CHAPTER 22 Stored Code 495

    LAB 22.1 Gathering Information About Stored Code 496

        22.1.1 Get Stored Code Information from the Data Dictionary 496

        22.1.2 Enforce the Purity Level with the RESTRICT_REFERENCES Pragma 500

        22.1.3 Overload Modules 506

Chapter 22 Try It Yourself 512

CHAPTER 23 Object Types in Oracle 513

    LAB 23.1 Object Types 514

        23.1.1 Use Object Types 522

        23.1.2 Use Object Types with Collections 526

    LAB 23.2 Object Type Methods 531

        23.2.1 Use Object Type Methods 544

Chapter 23 Try It Yourself 554

CHAPTER 24 Oracle Supplied Packages 555

    LAB 24.1 Making Use of Oracle Supplied Packages to Profile PL/SQL, Access Files, and Schedule Jobs 556

        24.1.1 Access Files with UTL_FILE 563

        24.1.2 Schedule Jobs with DBMS_JOB 563

        24.1.3 Submit Jobs 564

    LAB 24.2 Making Use of Oracle-Supplied Packages to Generate an Explain Plan and Create HTML Pages 568

        24.2.1 Generate an Explain Plan with DBMS_XPLAN 572

    LAB 24.3 Creating Web Pages with the Oracle Web Toolkit 578

        24.3.1 Create an HTML Page with the Oracle Web Toolkit 594

APPENDIX A PL/SQL Formatting Guide 597

APPENDIX B Student Database Schema 601

APPENDIX C ANSI SQL Standards 607

APPENDIX D Answers to the Try It Yourself Sections 613

INDEX 705

Amazon.com® Reader Reviews (Ranked by Helpfulness)

Average Amazon.com® Rating: 4.0 out of 5 rating Based on 8 Ratings

not deep - 2004-10-18
Reviewer Rating: 1 star rating2 star rating3 star rating4 star rating5 star rating
It is not as good as Alice Rischert's "Oracle SQL by example". Looks like it is written for people who never programed before. So it teaches how to program using examples of pl/sql. Might be good for beginners.

Well done. Oracle Education look out! - 2005-03-04
Reviewer Rating: 1 star rating2 star rating3 star rating4 star rating5 star rating
I'm a developer and DBA who had not written PL/SQL in over a year. I used this book as a refresher.

This is the "Learning Perl" of PL/SQL, meaning: a beginner can learn from it, and an experienced hack can use it as a reference.

I consider lots of good sample code to be important when learning a programming language. Here it is, as a series of labs, with intelligent discussion. It's like having a friend who's an expert act as a personal tutor. It has complete, well-rounded coverage of PL/SQL fundamentals: control structures, stored procedures, packages, and a good chapter on triggers. In rare cases where some keyword is introduced with no explanation, it's usually covered in the following section.

It is nearly the quality of Oracle course materials, but with (a tolerable amount of) typos. Annoyingly, some of the typos are incorrect answers in the appendix; the rest are obvious typos and therefore not too confusing.

Chapter 1 is deceptively basic, explaining what a program is, what a programming language is, etc., but chapter 2 jumps right into PL/SQL with no further ado. The book progresses in baby steps as far as PL/SQL is concerned. Although knowledge of SQL is assumed, some concepts like commit & rollback, savepoints, and sequences are introduced and explained for beginners. It is also assumed that the reader:

- knows what DML, DDL, and the DUAL table are;
- has an account that can create objects (the "Scott" demo account will do); and
- knows how to connect to the database with SQL*Plus or a development tool (IDE).

With an IDE I was able to work through it in about thirty hours. I just read chapters I was already strong in without working those labs, but that time included plenty of puttering and experimenting with the lab material I did work.

I also bought 10g "PL/SQL Programming" by Urman, et. al. but dove into this book first. The two books overlap. The freely available "PL/SQL User's Guide and Reference" from Oracle is still a must-have.

Densely packed with pertinent information and very little else, it's about 99% useful information. Like the blurb says, "Just the facts." It is a complete Oracle course, so it was worth $2400 in that respect.

Provides a solid foundation - 2005-02-28
Reviewer Rating: 1 star rating2 star rating3 star rating4 star rating5 star rating
The book provides very solid foundation of PL\SQL. It wisely covers the basics and repeats them in a format which isn't too redundant. For example, there are several chapters on Loops (simple, cursor, while, nested etc). This makes sense since loops are extremely important part of PL\SQL. The PL\SQL code examples are very well thought out and the test questions are very thought provoking.

The book does not cover advanced topics such as temporary global tables and performance tuning PL\SQL code, but that is beyond the scope of this book anyhow.

Suprisingly, I thought the chapter on stored procedures was very weak. It was almost nonexistent. The book spends almost 3 times as much text on Triggers than on stored procedures. This was a mistake since triggers are rarely used because of its performance constraints. Stored procedures, on the other hand, are the bread and butter of PL\SQL.

Good Book - 2006-12-14
Reviewer Rating: 1 star rating2 star rating3 star rating4 star rating5 star rating
Good introductory level book which has sufficient depth (not just list of statements!).
Pluses:
1) Lots of little explanations that aren't available in the Manuals, which help to put things in perspective,even for experienced programmers who aren't familiar with PL/SQL.
2) Plenty of examples, and code to run.
3) Good review questions and explanations.
4) Covers most topics to a reasonable level for an introductory book.
Minuses:
1) Too many wrong answers (typos), which can confuse novices who aren't sure of their understanding.
2) Some explanations are a bit confusing, especially towards the later chapters - it is better stated in the Manual.

PL/SQL by Example Needs More Basic Examples - 2009-03-19
Reviewer Rating: 1 star rating2 star rating3 star rating4 star rating5 star rating
While the book appears comprehensive, it is not designed for beginners. If you are a PL SQL user who has only select proviledges, you need more in-depth examples of how to construct complex nested queries in order to obtain your data analysis objective.

This is a good book for more advanced users who have total access to all levels of SQL resources.

Browse Similar Topics

Top Level Categories:
Databases

Sub-Categories:
Databases > Oracle
Databases > SQL

Some information on this page was provided using data from Amazon.com®. View at Amazon >


About Safari Books Online • Terms of Service • Privacy Policy • Contact Us • Corporate Licenses • Help • Accessibility | See us on FacebookSee us on Linked InSee us on TwitterRSS

Copyright 2009 Safari Books Online. All rights reserved.