{"product_id":"9780137151707","title":"Oracle PL\/SQL by Example","description":"\u003cp\u003eThis 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. \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003eOne 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. \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003eThis 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 \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e • Mastering basic PL\/SQL concepts and general programming language fundamentals, and understanding SQL’s role in\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e PL\/SQL\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e • Using conditional and iterative program control techniques, including the new CONTINUE and CONTINUE WHEN statements\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e • Efficiently handling errors and exceptions\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e • Working with cursors and triggers, including Oracle 11g’s powerful new compound triggers\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e • Using stored procedures, functions, and packages to write modular code that other programs can execute\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e • Working with collections, object-relational features, native dynamic SQL, bulk SQL, and other advanced PL\/SQL capabilities\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e • Handy reference appendices: PL\/SQL formatting guide, sample database schema, ANSI SQL standards reference, and \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e more\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003eBenjamin 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 \u003ci\u003eOracle Forms Developer: The Complete Video Course\u003c\/i\u003e, and coauthored \u003ci\u003eOracle Web Application Programming for PL\/SQL Developers\u003c\/i\u003e. \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003eElena 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.\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eContents\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eAcknowledgments xiv\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eAbout the Authors xv\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eIntroduction xvii\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 1 \u003c\/b\u003e\u003cb\u003ePL\/SQL Concepts 1\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 1.1 \u003c\/b\u003ePL\/SQL in Client\/Server Architecture 2\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 1.1.1 Use PL\/SQL Anonymous Blocks 8\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 1.1.2 Understand How PL\/SQL Gets Executed 10\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 1.2 \u003c\/b\u003ePL\/SQL in SQL*Plus 12\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 1.2.1 Use Substitution Variables 16\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 1.2.2 Use the DBMS_OUTPUT.PUT_LINE Statement 17\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 1 Try It Yourself 19\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 2 \u003c\/b\u003e\u003cb\u003eGeneral Programming Language\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eFundamentals 21\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 2.1 \u003c\/b\u003ePL\/SQL Programming Fundamentals 22\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 2.1.1 Make Use of PL\/SQL Language Components 23\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 2.1.2 Make Use of PL\/SQL Variables 24\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 2.1.3 Handle PL\/SQL Reserved Words 26\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 2.1.4 Make Use of Identifiers in PL\/SQL 27\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 2.1.5 Make Use of Anchored Datatypes 28\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 2.1.6 Declare and Initialize Variables 31\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 2.1.7 Understand the Scope of a Block, Nested Blocks, and Labels 34\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 2 Try It Yourself 37\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 3 \u003c\/b\u003e\u003cb\u003eSQL in PL\/SQL 39\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 3.1 \u003c\/b\u003eMaking Use of DML in PL\/SQL 40\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 3.1.1 Use the Select INTO Syntax for Variable Initialization 41\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 3.1.2 Use DML in a PL\/SQL Block 42\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 3.1.3 Make Use of a Sequence in a PL\/SQL Block 44\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 3.2 \u003c\/b\u003eMaking Use of SAVEPOINT 45\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 3.2.1 Make Use of COMMIT, ROLLBACK, and SAVEPOINT in a PL\/SQL Block 48\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 3 Try It Yourself 51\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 4 \u003c\/b\u003e\u003cb\u003eConditional Control: IF Statements 53\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 4.1 \u003c\/b\u003eIF Statements 54\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 4.1.1 Use the IF-THEN Statement 58\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 4.1.2 Use the IF-THEN-ELSE Statement 62\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 4.2 \u003c\/b\u003eELSIF Statements 65\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 4.2.1 Use the ELSIF Statement 69\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 4.3 \u003c\/b\u003eNested IF Statements 74\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 4.3.1 Use Nested IF Statements 76\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 4 Try It Yourself 80\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 5 \u003c\/b\u003e\u003cb\u003eConditional Control: CASE Statements 81\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 5.1 \u003c\/b\u003eCASE Statements 82\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 5.1.1 Use the CASE Statement 89\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 5.1.2 Use the Searched CASE Statement 91\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 5.2 \u003c\/b\u003eCASE Expressions 96\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 5.2.1 Use the CASE Expression 100\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 5.3 \u003c\/b\u003eNULLIF and COALESCE Functions 103\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 5.3.1 The NULLIF Function 107\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 5.3.2 Use the COALESCE Function 109\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 5 Try It Yourself 112\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 6 \u003c\/b\u003e\u003cb\u003eIterative Control: Part I 113\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 6.1 \u003c\/b\u003eSimple Loops 114\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 6.1.1 Use Simple Loops with EXIT Conditions 118\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 6.1.2 Use Simple Loops with EXIT WHEN Conditions 120\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 6.2 \u003c\/b\u003eWHILE Loops 124\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 6.2.1 Use WHILE Loops 128\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 6.3 \u003c\/b\u003eNumeric FOR Loops 132\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 6.3.1 Use Numeric FOR Loops with the IN Option 137\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 6.3.2 Use Numeric FOR Loops with the REVERSE Option 139\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 6 Try It Yourself 142\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 7 \u003c\/b\u003e\u003cb\u003eIterative Control: Part II 143\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 7.1 \u003c\/b\u003eThe CONTINUE Statement 144\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 7.1.1 Use the CONTINUE Statement 146\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 7.1.2 Use the CONTINUE WHEN Condition 152\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 7.2 \u003c\/b\u003eNested Loops 154\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 7.2.1 Use Nested Loops 157\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 7 Try It Yourself 161\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 8 \u003c\/b\u003e\u003cb\u003eError Handling and Built-in Exceptions 163\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 8.1 \u003c\/b\u003eHandling Errors 164\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 8.1.1 Understand the Importance of Error Handling 167\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 8.2 \u003c\/b\u003eBuilt-in Exceptions 169\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 8.2.1 Use Built-in Exceptions 174\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 8 Try It Yourself 178\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 9 \u003c\/b\u003e\u003cb\u003eExceptions 179\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 9.1 \u003c\/b\u003eException Scope 180\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 9.1.1 Understand the Scope of an Exception 183\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 9.2 \u003c\/b\u003eUser-Defined Exceptions 188\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 9.2.1 Use User-Defined Exceptions 193\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 9.3 \u003c\/b\u003eException Propagation 197\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 9.3.1 Understand How Exceptions Propagate 203\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 9.3.2 Reraise Exceptions 206\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 9 Try It Yourself 209\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 10 \u003c\/b\u003e\u003cb\u003eExceptions: Advanced Concepts 211\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 10.1 \u003c\/b\u003eRAISE_APPLICATION_ERROR 212\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 10.1.1 Use RAISE_APPLICATION_ERROR 215\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 10.2 \u003c\/b\u003eEXCEPTION_INIT Pragma 217\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 10.2.1 USE the EXCEPTION_INIT Pragma 219\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 10.3 \u003c\/b\u003eSQLCODE and SQLERRM 222\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 10.3.1 Use SQLCODE and SQLERRM 225\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 10 Try It Yourself 227\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 11 \u003c\/b\u003e\u003cb\u003eIntroduction to Cursors 229\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 11.1 \u003c\/b\u003eCursor Manipulation 230\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 11.1.1 Make Use of Record Types 234\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 11.1.2 Process an Explicit Cursor 235\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 11.1.3 Make Use of Cursor Attributes 240\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 11.1.4 Put It All Together 242\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 11.2 \u003c\/b\u003eUsing Cursor FOR Loops and Nested Cursors 246\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 11.2.1 Use a Cursor FOR Loop 247\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 11.2.2 Process Nested Cursors 247\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 11 Try It Yourself 252\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 12 \u003c\/b\u003e\u003cb\u003eAdvanced Cursors 253\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 12.1 \u003c\/b\u003eUsing Parameters with Cursors and Complex Nested Cursors 254\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 12.1.1 Use Parameters in a Cursor 255\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 12.1.2 Use Complex Nested Cursors 255\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 12.2 \u003c\/b\u003eFOR UPDATE and WHERE CURRENT Cursors 258\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 12.2.1 For UPDATE and WHERE CURRENT Cursors 258\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 13 \u003c\/b\u003e\u003cb\u003eTriggers 263\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 13.1 \u003c\/b\u003eWhat Triggers Are 264\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 13.1.1 Understand What a Trigger Is 272\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 13.1.2 Use BEFORE and AFTER Triggers 274\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 13.2 \u003c\/b\u003eTypes of Triggers 277\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 13.2.1 Use Row and Statement Triggers 283\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 13.2.2 Use INSTEAD OF Triggers 285\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChaper 13 Try It Yourself 290\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 14 \u003c\/b\u003e\u003cb\u003eCompound Triggers 291\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 14.1 \u003c\/b\u003eMutating Table Issues 292\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 14.1.1 Understand Mutating Tables 296\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 14.2 \u003c\/b\u003eCompound Triggers 300\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 14.2.1 Understand Compound Triggers 306\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 14 Try It Yourself 313\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 15 \u003c\/b\u003e\u003cb\u003eCollections 315\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 15.1 \u003c\/b\u003ePL\/SQL Tables 316\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 15.1.1 Use Associative Arrays 326\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 15.1.2 Use Nested Tables 330\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 15.2 \u003c\/b\u003eVarrays 334\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 15.2.1 Use Varrays 338\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 15.3 \u003c\/b\u003eMultilevel Collections 342\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 15.3.1 Use Multilevel Collections 344\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 15 Try It Yourself 348\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 16 \u003c\/b\u003e\u003cb\u003eRecords 349\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 16.1 \u003c\/b\u003eRecord Types 350\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 16.1.1 Use Table-Based and Cursor-Based Records 358\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 16.1.2 Use User-Defined Records 362\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 16.2 \u003c\/b\u003eNested Records 367\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 16.2.1 Use Nested Records 369\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 16.3 \u003c\/b\u003eCollections of Records 373\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 16.3.1 Use Collections of Records 374\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 16 Try It Yourself 378\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 17 \u003c\/b\u003e\u003cb\u003eNative Dynamic SQL 379\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 17.1 \u003c\/b\u003eEXECUTE IMMEDIATE Statements 380\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 17.1.1 Use the EXECUTE IMMEDIATE Statement 387\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 17.2 \u003c\/b\u003eOPEN-FOR, FETCH, and CLOSE Statements 392\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 17.2.1 Use OPEN-FOR, FETCH, and CLOSE Statements 395\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 17 Try It Yourself 401\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 18 \u003c\/b\u003e\u003cb\u003eBulk SQL 403\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 18.1 \u003c\/b\u003eThe FORALL Statement 404\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 18.1.1 Use the FORALL Statement 413\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 18.2 \u003c\/b\u003eThe BULK COLLECT Clause 422\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 18.2.1 Use the BULK COLLECT Statement 428\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 18 Try It Yourself 437\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 19 \u003c\/b\u003e\u003cb\u003eProcedures 439\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 19.1 \u003c\/b\u003eCreating Procedures 441\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 19.1.1 Create Procedures 441\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 19.1.2 Query the Data Dictionary for Information on Procedures 443\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 19.2 \u003c\/b\u003ePassing Parameters into and out of Procedures 444\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 19.2.1 Use IN and OUT Parameters with Procedures 445\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 19 Try It Yourself 447\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e Part 1 447\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e Part 2 447\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 20 \u003c\/b\u003e\u003cb\u003eFunctions 449\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 20.1 \u003c\/b\u003eCreating and Using Functions 450\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 20.1.1 Create Stored Functions 451\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 20.1.2 Make Use of Functions 452\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 20.1.3 Invoke Functions in SQL Statements 453\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 20.1.4 Write Complex Functions 454\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 20 Try It Yourself 455\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 21 \u003c\/b\u003e\u003cb\u003ePackages 457\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 21.1 \u003c\/b\u003eThe Benefits of Using Packages 458\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 21.1.1 Create Package Specifications 460\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 21.1.2 Create Package Bodies 462\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 21.1.3 Call Stored Packages 464\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 21.1.4 Create Private Objects 465\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 21.1.5 Create Package Variables and Cursors 469\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 21.2 \u003c\/b\u003eCursor Variables 471\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 21.2.1 Make Use of Cursor Variables 475\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 21.3 \u003c\/b\u003eExtending the Package 480\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 21.3.1 Extend the Package 480\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 21 Try It Yourself 493\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 22 \u003c\/b\u003e\u003cb\u003eStored Code 495\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 22.1 \u003c\/b\u003eGathering Information About Stored Code 496\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 22.1.1 Get Stored Code Information from the Data Dictionary 496\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 22.1.2 Enforce the Purity Level with the RESTRICT_REFERENCES Pragma 500\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 22.1.3 Overload Modules 506\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 22 Try It Yourself 512\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 23 \u003c\/b\u003e\u003cb\u003eObject Types in Oracle 513\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 23.1 \u003c\/b\u003eObject Types 514\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 23.1.1 Use Object Types 522\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 23.1.2 Use Object Types with Collections 526\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 23.2 \u003c\/b\u003eObject Type Methods 531\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 23.2.1 Use Object Type Methods 544\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eChapter 23 Try It Yourself 554\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eCHAPTER 24 \u003c\/b\u003e\u003cb\u003eOracle Supplied Packages 555\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 24.1 \u003c\/b\u003eMaking Use of Oracle Supplied Packages to Profile PL\/SQL, Access Files, and Schedule Jobs 556\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 24.1.1 Access Files with UTL_FILE 563\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 24.1.2 Schedule Jobs with DBMS_JOB 563\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 24.1.3 Submit Jobs 564\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 24.2 \u003c\/b\u003eMaking Use of Oracle-Supplied Packages to Generate an Explain Plan and Create HTML Pages 568\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 24.2.1 Generate an Explain Plan with DBMS_XPLAN 572\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003e LAB 24.3 \u003c\/b\u003eCreating Web Pages with the Oracle Web Toolkit 578\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e 24.3.1 Create an HTML Page with the Oracle Web Toolkit 594\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eAPPENDIX A PL\/SQL Formatting Guide 597\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eAPPENDIX B \u003c\/b\u003e\u003cb\u003eStudent Database Schema 601\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eAPPENDIX C \u003c\/b\u003e\u003cb\u003eANSI SQL Standards 607\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eAPPENDIX D \u003c\/b\u003e\u003cb\u003eAnswers to the Try It Yourself Sections 613\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp\u003e\u003cb\u003eINDEX \u003c\/b\u003e\u003cb\u003e705\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003e\u003c\/p\u003e","brand":"Pearson Education","offers":[{"title":"Default Title","offer_id":47080607777008,"sku":"9780137151707","price":55.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0737\/7593\/9824\/files\/9780137151707_p0.jpg?v=1763655262","url":"https:\/\/shop-qa.barnesandnoble.com\/products\/9780137151707","provider":"Barnes \u0026 Noble (DEV)","version":"1.0","type":"link"}