Oracle PL/SQL. DUMmIES. by Michael Rosenblum and Dr. Paul Dorsey FOR

Similar documents
Beginning Transact-SQL with SQL Server 2000 and Paul Turley with Dan Wood

Mastering UNIX Shell Scripting

7 Windows Tweaks. A Comprehensive Guide to Customizing, Increasing Performance, and Securing Microsoft Windows 7. Steve Sinchak

Linux Command Line and Shell Scripting Bible

Professional ASP.NET 2.0 Databases. Thiru Thangarathinam

ORACLE: PL/SQL Programming

Beginning Web Programming with HTML, XHTML, and CSS. Second Edition. Jon Duckett

Join the p2p.wrox.com. Wrox Programmer to Programmer. Beginning PHP 5.3. Matt Doyle

Linux Command Line and Shell Scripting Bible. Third Edtion

Study Guide. Robert Schmidt Dane Charlton

PHP & MySQL. Learn to: Janet Valade. Making Everything Easier! 4th Edition. Create well-formed PHP code that s compliant with PHP 4, 5, and 6

Cloud Phone Systems. Andrew Moore. Making Everything Easier! Nextiva Special Edition. Learn:

Real-Time Optimization by Extremum-Seeking Control

iwork DUMmIES 2ND EDITION FOR

Agile Database Techniques Effective Strategies for the Agile Software Developer. Scott W. Ambler

Contents I Introduction 1 Introduction to PL/SQL iii

Relational Database Index Design and the Optimizers

Implementing Security and Tokens: Current Standards, Tools, and Practices

LEGITIMATE APPLICATIONS OF PEER-TO-PEER NETWORKS

Creating Web Pages. Learn to: Bud E. Smith. Making Everything Easier! 9th Edition. Design, build, and post a Web page

LEGITIMATE APPLICATIONS OF PEER-TO-PEER NETWORKS DINESH C. VERMA IBM T. J. Watson Research Center A JOHN WILEY & SONS, INC., PUBLICATION

COSO Enterprise Risk Management

Linux. The book you need to succeed! Boot up to Ubuntu, Fedora, KNOPPIX, Debian, opensuse, and 13 Other Distributions Edition.

Oracle Database 11g: Program with PL/SQL Release 2

1Z Oracle Database 11g - Program with PL/SQL Exam Summary Syllabus Questions

MCITP Windows Server 2008 Server Administrator Study Guide

Introduction to Computer Science and Business

Oracle PLSQL Training Syllabus

ORACLE TRAINING. ORACLE Training Course syllabus ORACLE SQL ORACLE PLSQL. Oracle SQL Training Syllabus

DIFFERENTIAL EQUATION ANALYSIS IN BIOMEDICAL SCIENCE AND ENGINEERING

Oracle Database 12c: Program with PL/SQL Duration: 5 Days Method: Instructor-Led

ADVANTAGES. Via PL/SQL, all sorts of calculations can be done quickly and efficiently without use of Oracle engine.

Networking. 11th Edition. by Doug Lowe

Oracle Database: Program with PL/SQL

Oracle Database 11g: Program with PL/SQL

Oracle Database: Program with PL/SQL Ed 2

WINDOWS 10. by Paul McFedries

Conditionally control code flow (loops, control structures). Create stored procedures and functions.

Securing SCADA Systems. Ronald L. Krutz

Modern Experimental Design

Oracle Developer Track Course Contents. Mr. Sandeep M Shinde. Oracle Application Techno-Functional Consultant

HASHING IN COMPUTER SCIENCE FIFTY YEARS OF SLICING AND DICING

IZ0-144Oracle 11g PL/SQL Certification (OCA) training

Oracle Database 11g: SQL and PL/SQL Fundamentals

Oracle Database: SQL and PL/SQL Fundamentals NEW

Google Voice. Learn to: Bud E. Smith Chris Dannen. Making Everything Easier! Set up and use Google Voice

Oracle Database: SQL and PL/SQL Fundamentals Ed 2

Oracle Development - Part III: Coding Standards

Office 2016 For Seniors. by Faithe Wempen

Microprocessor Theory

MODERN MULTITHREADING

TASK SCHEDULING FOR PARALLEL SYSTEMS

Oracle Database 12c R2: Program with PL/SQL Ed 2 Duration: 5 Days

Practical Database Programming with Visual Basic.NET

Oracle Database 10g: PL/SQL Fundamentals. Oracle Internal & Oracle Academy Use Only. Volume I Student Guide. D17112GC30 Edition 3.0 April 2009 D59413

Oracle PLSQL. Course Summary. Duration. Objectives

Hands-On Oracle Application Express Security

Office 2010 For Seniors

Oracle Database: Introduction to SQL/PLSQL Accelerated

CO Oracle Database 12c: Advanced PL/SQL

XSLT 2.0 and XPath 2.0

2 PL/SQL - fundamentals Variables and Constants Operators SQL in PL/SQL Control structures... 7

Question: Which statement would you use to invoke a stored procedure in isql*plus?

Oracle - Oracle Database: Program with PL/SQL Ed 2

COMPONENT-ORIENTED PROGRAMMING

5. Single-row function

Ruby on Rails. Bible

Introduction to SQL/PLSQL Accelerated Ed 2

Developer. 1 enterprise. Professional Guide. Oracle Advanced PL/SQL. example questions for 1Z0-146 examination

Windows 10 Anniversary Update. Paul McFedries

COWLEY COLLEGE & Area Vocational Technical School

Oracle Database 10g: PL/SQL Fundamentals

Using SQL Developer. Oracle University and Egabi Solutions use only

FileMaker. Pro 10. The book you need to succeed! Companion Web Site. Ray Cologon. Go from basics to full-scale development

SQL+PL/SQL. Introduction to SQL

PLSQL 9i Index. Section Title Page

Algorithms and Parallel Computing

Topics Fundamentals of PL/SQL, Integration with PROIV SuperLayer and use within Glovia

Oracle Database: SQL and PL/SQL Fundamentals

ORACLE TRAINING CURRICULUM. Relational Databases and Relational Database Management Systems

Database Programming with PL/SQL

Full file at

Question Bank PL/SQL Fundamentals-I

Oracle SQL & PL SQL Course

SEO. 6th Edition. by Peter Kent

Microsoft Office Simply the Easiest Way to Learn. Kate Shoup

Yellow Intelligent User Guide A Guide To Downloading SDFI Secure Files

Oracle Database 10g: PL/SQL Fundamentals

The SQL Guide to Pervasive PSQL. Rick F. van der Lans

A Unit of SequelGate Innovative Technologies Pvt. Ltd. All Training Sessions are Completely Practical & Real-time

Beginning Visual Basic 2005 Databases. Thearon Willis

Oracle SQL Developer TimesTen In-Memory Database Support

Oracle PL/SQL - 12c & 11g [Basic PL/SQL & Advanced PL/SQL]

IP MULTICAST WITH APPLICATIONS TO IPTV AND MOBILE DVB-H

IBM Database Conversion Workbench 3.5


Oracle SQL. murach s. and PL/SQL TRAINING & REFERENCE. (Chapter 2)

Oracle12c Release 1 PL/SQL (3 Days)

Oracle PL SQL Training & Certification

SEF DATABASE FOUNDATION ON ORACLE COURSE CURRICULUM

Transcription:

Oracle PL/SQL FOR DUMmIES by Michael Rosenblum and Dr. Paul Dorsey

Oracle PL/SQL For Dummies Published by Wiley Publishing, Inc. 111 River Street Hoboken, NJ 07030-5774 www.wiley.com Copyright 2006 by Wiley Publishing, Inc., Indianapolis, Indiana Published by Wiley Publishing, Inc., Indianapolis, Indiana Published simultaneously in Canada No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Legal Department, Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 572-4355, or online at http://www.wiley.com/go/permissions. Trademarks: Wiley, the Wiley Publishing logo, For Dummies, the Dummies Man logo, A Reference for the Rest of Us!, The Dummies Way, Dummies Daily, The Fun and Easy Way, Dummies.com, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates in the United States and other countries, and may not be used without written permission. Oracle is a registered trademark of Oracle Corporation. All other trademarks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book. LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND THE AUTHOR MAKE NO REP- RESENTATIONS OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE CON- TENTS OF THIS WORK AND SPECIFICALLY DISCLAIM ALL WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE. NO WARRANTY MAY BE CRE- ATED OR EXTENDED BY SALES OR PROMOTIONAL MATERIALS. THE ADVICE AND STRATEGIES CON- TAINED HEREIN MAY NOT BE SUITABLE FOR EVERY SITUATION. THIS WORK IS SOLD WITH THE UNDERSTANDING THAT THE PUBLISHER IS NOT ENGAGED IN RENDERING LEGAL, ACCOUNTING, OR OTHER PROFESSIONAL SERVICES. IF PROFESSIONAL ASSISTANCE IS REQUIRED, THE SERVICES OF A COMPETENT PROFESSIONAL PERSON SHOULD BE SOUGHT. NEITHER THE PUBLISHER NOR THE AUTHOR SHALL BE LIABLE FOR DAMAGES ARISING HEREFROM. THE FACT THAT AN ORGANIZATION OR WEBSITE IS REFERRED TO IN THIS WORK AS A CITATION AND/OR A POTENTIAL SOURCE OF FUR- THER INFORMATION DOES NOT MEAN THAT THE AUTHOR OR THE PUBLISHER ENDORSES THE INFOR- MATION THE ORGANIZATION OR WEBSITE MAY PROVIDE OR RECOMMENDATIONS IT MAY MAKE. FURTHER, READERS SHOULD BE AWARE THAT INTERNET WEBSITES LISTED IN THIS WORK MAY HAVE CHANGED OR DISAPPEARED BETWEEN WHEN THIS WORK WAS WRITTEN AND WHEN IT IS READ. For general information on our other products and services, please contact our Customer Care Department within the U.S. at 800-762-2974, outside the U.S. at 317-572-3993, or fax 317-572-4002. For technical support, please visit www.wiley.com/techsupport. Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books. Library of Congress Control Number: 2006922426 ISBN-13: 978-0-7645-9957-6 ISBN-10: 0-7645-9957-7 Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1 1O/RX/QV/QW/IN

Contents at a Glance Introduction...1 Part I: Basic PL/SQL Concepts...7 Chapter 1: PL/SQL and Your Database...9 Chapter 2: The PL/SQL Environment...23 Part II: Getting Started with PL/SQL...39 Chapter 3: Laying the Groundwork: PL/SQL Fundamentals...41 Chapter 4: Controlling Program Flow...85 Chapter 5: Handling Exceptions...105 Chapter 6: PL/SQL and SQL Working Together...127 Part III: Standards and Structures...163 Chapter 7: Putting Your Code in the Right Place...165 Chapter 8: Creating Naming Standards...187 Chapter 9: Creating Coding Standards...201 Part IV: PL/SQL Data Manipulations...219 Chapter 10: Basic Datatypes...221 Chapter 11: Advanced Datatypes...253 Part V: Taking PL/SQL to the Next Level...289 Chapter 12: Transaction Control...291 Chapter 13: Dynamic SQL and PL/SQL...313 Chapter 14: PL/SQL Best Practices...335 Part VI: The Part of Tens...355 Chapter 15: Ten PL/SQL Tips...357 Chapter 16: Ten Common Mistakes to Avoid in PL/SQL...377 Index...397

Table of Contents Introduction...1 About This Book...1 Foolish Assumptions...2 How This Book Is Organized...2 Part I: Basic PL/SQL Concepts...2 Part II: Getting Started with PL/SQL...3 Part III: Standards and Structures...3 Part IV: PL/SQL Data Manipulations...3 Part V: Taking PL/SQL to the Next Level...3 Part VI: The Part of Tens...4 Icons Used in This Book...4 Where to Go from Here...4 Part I: Basic PL/SQL Concepts...7 Chapter 1: PL/SQL and Your Database............................9 Knowing Just Enough about Relational Databases...9 What makes a database relational?...10 Understanding basic database terminology...12 Introducing database normalization...13 What is a DBMS?...16 The Scoop on SQL and PL/SQL...16 The purpose of SQL and PL/SQL...17 The difference between SQL and PL/SQL...18 What s new in Oracle SQL and PL/SQL?...18 What Is PL/SQL Good For?...19 Using database triggers...19 Scripting with speed...20 Keeping code server-side...20 Programming for Oracle Developer...21 Chapter 2: The PL/SQL Environment.............................23 Setting Up an Oracle Environment...23 Hardware and Software Requirements...25 Accessing the Oracle Technology Network...26 Installing the Database...27 Working with Code...28 SQL*Plus...28 Oracle SQL Developer...30 Third-party tools...30

x Oracle PL/SQL For Dummies Establishing a Database Connection...31 Checking the operating services...32 Connecting with your username...32 Unlocking (or locking) accounts...33 Resetting passwords...33 Setting up the server to communicate...34 The Basics of PL/SQL Programs...34 Writing a simple program...34 Creating stored procedures...36 Passing parameters to procedures...36 Examining the Sample Data...37 The Scott/Tiger schema...37 The Human Resources (HR) and Order Entry (OE) schemas...38 Part II: Getting Started with PL/SQL...39 Chapter 3: Laying the Groundwork: PL/SQL Fundamentals.........41 PL/SQL As a Programming Language...41 Anonymous PL/SQL Blocks...42 Introducing the Lexical Set of Elements...43 Identifiers...44 Delimiters...44 Literals...45 Comments...45 Working with Constants and Variables...46 Declaring variables...46 Assigning values to variables...48 Literals as variable values...49 Understanding the scope of variables...51 Building Expressions with Operators...53 Running Anonymous Blocks of Code...56 Identifying common mistakes...56 Spotting compilation errors...57 Recognizing semicolon-related errors...57 Creating Reusable PL/SQL Code...59 Wrapping a task into a procedure...59 Returning values with functions...61 Parameters of subprograms...63 Storing PL/SQL in the Database...67 Database procedures and functions...68 Packages...69 Triggers...71 Interpreting and fixing compilation errors...73

Table of Contents xi Checking Out PL/SQL Extras...76 Overloading calls...76 Resolving calls to subprograms...78 Recursion...80 Compiler hints and directives...82 Built-in packages...83 Chapter 4: Controlling Program Flow............................85 Creating Condition Statements...85 IF...THEN statements...86 IF...ELSE statements...87 CASE statements...89 Comparing with NULL...91 Handling conditions...95 Looping the Loop...97 Simple loops...97 Nested loops...99 WHILE loop...100 FOR loop...102 Chapter 5: Handling Exceptions...............................105 Understanding Exception Basics...106 Adding Exception Handlers to Your Code...107 Understanding Different Exception Types...110 Predefined Exceptions in PL/SQL Code...111 Adding User-Defined Exceptions...114 Assigning a code to a user-defined exception...115 Including error messages in user-defined exceptions...116 Propagation of Exceptions...118 Seeing propagation of exceptions in action...118 Handling exceptions without halting the program...122 Avoiding exceptions raised in declaration part and exception handler...124 Writing Exceptional Exceptions...126 Chapter 6: PL/SQL and SQL Working Together...................127 Cursors: What They Are and How to Use Them...128 Returning more than one piece of information...129 Looping through multiple records...132 Placing cursors in nested loops...133 Passing parameters to cursors...134 Knowing Where to Declare Cursors...137 Defining cursors in the header of the program unit...138 Defining cursors in the local PL/SQL block...138 Defining cursors in the package body...139 Defining cursors in the package spec...140

xii Oracle PL/SQL For Dummies Being Explicitly Smart with Implicit Cursors...142 Retrieving a single row: The basic syntax...142 Handling exceptions in implicit cursors...143 Returning an implicit cursor into a record...143 Accessing Status Info by Using Cursor Variables...144 Checking the status of explicit cursors...145 Checking the status of implicit cursors...146 Updating Records Fetched from Cursors...148 Using a simple UPDATE statement...148 Updating with logical operators...148 Taking a Shortcut with CURSOR FOR Loops...150 Comparing CURSOR FOR loops to cursors with the LOOP command...150 When do CURSOR FOR loops simplify exception handling?...152 When CURSOR FOR loops make your life harder...153 Knowing what record is processing...155 Referencing Functions in SQL...155 Important facts to remember...157 Getting good performance with functions...160 Part III: Standards and Structures...163 Chapter 7: Putting Your Code in the Right Place.................165 Putting Code in the Database...165 Managing code...166 Packaging code in the database...166 Placing triggers on tables...174 Building INSTEAD OF trigger views...177 Advantages of putting code in the database...182 Disadvantages of putting code in the database...182 Putting Code in the Application Server (Middle-Tier Approach)...183 Advantages of the middle-tier approach...184 Disadvantages of the middle-tier approach...184 Placing code in the view layer...185 Where Should You Place the Business Logic?...185 Chapter 8: Creating Naming Standards.........................187 What s in a Naming Standard?...187 Oracle database influences...188 Java influences...188 Modern application development tools and their influences...189 Setting Naming Standards for Common Code Elements...189 Basic objects...190 Variables...191

Table of Contents xiii Program units: Procedures, packages, functions, triggers...193 Parameters in code objects...194 Exceptions...196 User-defined datatypes...196 Collections...197 Filenames...198 Making Sure Your Organization Follows Standards...199 Chapter 9: Creating Coding Standards..........................201 Why Standards Are Important...201 Universal Truths...202 Don t hard-code any constant value...202 Don t make your program units too big or too small...205 Put each data element on its own line...206 Too many comments are much better than too few comments...207 Avoid global variables...210 Indent carefully...210 Be careful with capitalization...211 Use generic variable datatype declarations...211 Limit line length...213 Use explicit data conversion for dates...213 Use synonyms...213 Developing SQL Code Consistently...214 Using a new line...214 Using explicit column lists...214 Prefixing (and suffixing) column names from multiple tables...215 Giving columns aliases...216 Using parentheses in complex mathematical and logical expressions...216 Using white space intelligently...217 Writing save exception handlers...217 Packaging stored program units...217 Part IV: PL/SQL Data Manipulations...219 Chapter 10: Basic Datatypes..................................221 Introducing the Main Datatype Groups...221 Working with Numeric Datatypes...222 Using the NUMBER datatype...222 Boosting performance with BINARY_INTEGER...225 Using BINARY_FLOAT and BINARY_DOUBLE for complex calculations...226

xiv Oracle PL/SQL For Dummies Handling numeric datatypes in built-in functions...228 Keeping Track of Date and Time...229 Selecting the info you want from DATE...229 Using TIMESTAMP...234 Using TIMESTAMP WITH TIME ZONE...235 Storing elapsed time with INTERVAL...236 Working with dates and built-in functions...237 Storing Logical Values with BOOLEAN...241 Processing Characters and Strings...242 Limiting variable length with CHAR versus VARCHAR2...242 Useful character built-in functions...244 Extending your options with regular expressions...250 Chapter 11: Advanced Datatypes..............................253 Handling Large Objects in the Database...253 Using internal large objects (CLOB, BLOB)...254 Creating pointers with external large objects...254 Working with Large Objects...255 Populating BFILE...255 Loading data to the CLOB by using BFILE...256 Loading a page to a BLOB...257 Performing basic string operations on CLOBs...258 Keeping Code Consistent with User-Defined Subtypes...259 Defining Your Own Datatypes...260 Records...261 Object types...267 Grouping Sets of Data into Collections...271 Using VARRAYs...272 Nesting variable data sets in tables...275 Associative arrays (index-by tables)...280 Speeding Up Data Collection with Bulk Operations...283 Using the BULK COLLECT command...284 Adding a limit to BULK COLLECT...286 Part V: Taking PL/SQL to the Next Level...289 Chapter 12: Transaction Control...............................291 Using Transactions to Maintain Data Consistency...292 Committing or Rolling Back Changes to the Database...293 Firing explicit and implicit commits...294 Rolling back changes...294 Knowing when to use implicit rollbacks...297 Resolving deadlocks...298

Table of Contents xv Autonomous Transactions...298 Setting up the syntax for an autonomous transaction...299 Handling auditing and security with autonomous transactions...300 Autonomous transaction features...302 Applying autonomous transactions to other real-world situations...308 Chapter 13: Dynamic SQL and PL/SQL..........................313 Taking Advantage of Dynamic SQL...313 A Simple EXECUTE IMMEDIATE...314 Building SQL on the Fly...316 Improve performance with bind variables...317 Return information using cursor variables...324 Building DDL on the Fly...325 Using Quoted Strings with Dynamic SQL...327 Working with Advanced Datatypes...328 Using BULK COLLECT with dynamic SQL...329 Dynamic OPEN...FOR...330 Chapter 14: PL/SQL Best Practices............................335 Why Are Best Practices Important?...335 Laying the Groundwork for Good Coding...336 Understanding the big picture...336 Communicating effectively...337 Creating a code specification...337 Writing Code with Best Practices in Mind...338 Stub out your code...338 Check the architecture as you go...339 Prove code works with test cases...340 Use code libraries...340 Keep the code maintainable...341 Don t forget about performance...341 Compile as you go...341 Debug the timesaving way...342 Testing Your Code...343 What are you testing?...345 Creating a testing architecture...345 Performance and load testing...345 Tuning performance...346 Good enough is best...348 Coding the Agile Way...349 Working together in Agile teams...349 Programming in pairs...350 Delivering code quickly...350 Test first...351