Uh-oh, it looks like your Internet Explorer is out of date.

For a better shopping experience, please upgrade now.

Oracle PL/SQL Programming

Oracle PL/SQL Programming

4.5 4
by Steven Feuerstein

See All Formats & Editions

For the past ten years, O'Reilly's Oracle PL/SQL Programming has been the bestselling book on PL/SQL, Oracle's powerful procedural language. Packed with examples and helpful recommendations, the book has helped everyone--from novices to experienced developers, and from Oracle Forms developers to database administrators--make the most of PL/SQL.



For the past ten years, O'Reilly's Oracle PL/SQL Programming has been the bestselling book on PL/SQL, Oracle's powerful procedural language. Packed with examples and helpful recommendations, the book has helped everyone--from novices to experienced developers, and from Oracle Forms developers to database administrators--make the most of PL/SQL.

The fourth edition is a comprehensive update, adding significant new content and extending coverage to include the very latest Oracle version, Oracle Database 10g Release 2. It describes such new features as the PL/SQL optimizing compiler, conditional compilation, compile-time warnings, regular expressions, set operators for nested tables, nonsequential collections in FORALL, the programmer-defined quoting mechanism, the ability to backtrace an exception to a line number, a variety of new built-in packages, and support for IEEE 754 compliant floating-point numbers.

The new edition adds brand-new chapters on security (including encryption, row-level security, fine-grained auditing, and application contexts), file, email, and web I/O (including the built-in packages DBMS_OUTPUT, UTL_FILE, UTL_MAIL, UTL_SMTP, and UTL_HTTP) and globalization and localization.

Co-authored by the world's foremost PL/SQL authority, Steven Feuerstein, this classic reference provides language syntax, best practices, and extensive code, ranging from simple examples to complete applications--making it a must-have on your road to PL/SQL mastery. A companion web site contains many more examples and additional technical content for enhanced learning.

Editorial Reviews

Fatbrain Review

Devoted entirely to the PL/SQL (Procedural Language extension to SQL), this second edition of Oracle PL/SQL Programming updates the first edition for Oracle8, and includes chapters on new PL/SQL object features (object types, collections, object views, and external procedures). The first three chapters of the book explain what it means to program in PL/SQL, and then walk you through the main features of the language, programming habits, and effective coding style. It then moves on to basic PL/SQL programming components such as variables, cursors, conditional and sequential control statements, loops, exception handlers, PL/SQL records, and PL/SQL tables. Part three of the book covers built-in functions such as character, date, numeric, LOB, and conversion functions that can be put to use immediately in your applications. Moving forward, you will learn how to build procedures, functions, and packages correctly. Chapters 18 through 21 give an in-depth coverage of the new features of Oracle8. Learn about object types, nested tables and VARRAYs, object views, and external procedures. Armed with a summary of helpful tips for effective PL/SQL programming in the real world, part six of the book shows you how to manage your PL/SQL code and debug, tune, and trace the execution of your programs. The text contains numerous examples to guide you as to how, when, and where to apply programming constructs most effectively. Appendices A through C contain a summary of contents on the companion disk, how to call stored procedures from PL/SQL Version 1.1, and how to call Oracle's built-in packages.
New edition which adds chapters describing PL/SQL in terms of object features and tuning, and includes expanded discussions of debugging and tracing execution. Twenty-six chapters discuss topics including programming, language elements, built-in functions, modular code, and new PL/SQL8 features. The included disk contains the Oracle PL/SQL programming utilities guide which offers approximately 100 files of source code and documentation. Annotation c. by Book News, Inc., Portland, Or.

Product Details

O'Reilly Media, Incorporated
Publication date:
Sold by:
Barnes & Noble
Sales rank:
File size:
6 MB

Read an Excerpt

From Chapter: Variables and Program Data

...The LONG datatype

A variable declared LONG can store variable-length strings of up to 32760 bytes--this is actually seven fewer bytes than allowed in VARCHAR2 type variables! The LONG datatype for PL/SQL variables is quite different from the LONG datatype for columns in the Oracle Server. The LONG datatype in Oracle7 can store character strings of up to two gigabytes or 231-1 bytes; this large size makes the LONG column a possible repository of mulitmedia information, such as graphics images.

As a result of these maximum length differences, you can always insert a PL/SQL LONG variable value into a LONG database column, but you cannot select a LONG database value larger than 32760 bytes into a PL/SQL LONG variable.

In the Oracle database, there are many restrictions on how the LONG column can be used in a SQL statement; for example:

  • A tale may not contain more than one single LONG column.

  • Yoiu may not use the LONG column in a GROUP BY, ORDER BY, WHERE, or CONNECT BY clause.

  • You may not apply character functions (such as SUBSTR, INSTR, or LENGTH), to the LONG column.

PL/SQL LONG variables are free of these restrictions. In your PL/SQL code you can use a variable declared LONG just as you would a variable declared VARCHAR2. You can apply character functions to the variable. You can use it in the WHERE clause of a SELECT or UPDATE statement. This all makes sense given that, at least from the standpoint of the maximum size of the variables, there is really little difference between VARCHAR2 and LONG in PL/SQL.

Given the fact that aVARCHAR2 variable actually has a higher maximum length than the LONG and has no restrictions attached to it, I recommend that you always use the VARCHAR2 datatype in PL/SQL programs. LONGs have a place in the RDBMS, but that role is not duplicated in PL/SQL. This makes some sense since you will very rarely want to manipulate truly enormous strings within your program using such functions as SUBSTR or LENGTH or INSTR.

The RAW datatype

The RAW datatype is used to store binary data or other kinds of raw data, such as a digitized picture or image. A RAW variable has the same maximum length as VARCHAR2 (32767 bytes), which must also be specified when the variable is declared. The difference between RAW and VARCHAR2 is that PL/SQL will not try to interpret raw data. Within the Oracle RDBMS this means that Oracle will not perform character set conversions on RAW data when it is moved from one system (based, for example, on 7-bit ASCII) to another system.

Once again, there is an inconsistency between the PL/SQL maximum length for a RAW variable (32767) and the RDBMS maximum length (255). As a result, you cannot insert more than 255 bytes of your PL/SQL RAW variable's value into a database column. You can, on the other hand, insert the full value of a PL/SQL RAW variable into a column with type LONG RAW, which is a two-gigabyte container for raw data in the database.

The LONG RAW datatype

The LONG RAW datatype stores raw data of up to 32760 bytes and is just like the LONG datatype excerpt that the data in a LONG RAW variable is not interpreted by PL/SQL.

Given the fact that a RAW variable actually has a higher maximum length than the LONG RAW and has no restrictions attached to it, I recommended that you always use the RAW datatype in PL/SQL programs. LONG RAWs have a place in the RDBMS, but that role is not duplicated in PL/SQL.

The ROWID datatype

In the Oracle RDBMS, ROWID is a pseudocolumn that is part of every table you create. the rowid is an internally generated and maintained binary value which identifies a row of data in your table. It is called a pseudocolumn because a SQL statement includes it in places where you would normally use a column. However, it is not a column that you create for the table. Instead, the RDBMS generates the rowid for each row as it is inserted into the database. The information in the rowid provides the exact physical location of the row in the database. You cannot change the value of a rowid.

You can use the ROWID datatype to store rowids from the database in your PL/SQL program. You can SELECT or FETCH the rowid for a row into a ROWID variable. To manipulate rowids in Oracle8, you will want to use the built-in package, DBMS_ROWID (see Appendix C, Built-In Packages). In Oracle7, you will use the ROWIDTOCHAR function to convert the rowid to a fixed-length string and then perform operations against that string.

In Oracle7, for format of the fixed-length rowid is as follows:


Components of this format have the following meanings:


The block in the database file


The row in the clock (where the first row is zero, not one)


The database file

All these numbers are hexadecimal; the database file is a number which you would then use to look up the actual name of the database file through the data dictionary.

In Oracle8, rowid have been "extended" to support partitioned tables and indexes. The new, extended rowids include a data object number, identifying the database segment. Any schema object found in the same segment, such as a cluster of tables, will have the same object number. In Oracle8, then, a rowid contains the following information:

  • The data object number

  • The data file (where the first file is 1)

  • The data block within the data file

  • The row in the data block (where the first row is 0)

Oracle8 provides functions in the DBMS_ROWID package to convert between the new formats of rowids...

Meet the Author

Steven Feuerstein is considered one of the world's leading experts on the Oracle PL/SQL language. He is also the author of the sequel to Oracle PL/SQLProgramming, Advanced Oracle PL/SQL Programming with Packages (O'Reilly & Associates, 1996), and the upcoming Oracle Built-in Packages (O'Reilly & Associates, 1998).

Steven has been developing software since 1980 and worked for OracleCorporation from 1987 to 1992. He is a partner with RevealNet, Inc.(www.revealnet.com) and is the chief architect of the RevealNet products,PL/SQL Knowledge Base and PL/Vision (a code library of prebuilt PL/SQL packagesthat accelerates PL/SQL-based application development). Steven also sysopsRevealNet's "PL/SQL Pipeline," an online community for PL/SQL developers(www.revealnet.com/plsql-pipeline). He can be reached through email atfeuerstein@revealnet.com. Steven is also president of PL/Solutions, whichoffers training and consulting on both PL/Vision and PL/SQL(www.plsolutions.com). Finally (on the Oracle side of Steven's life), he servesas codirector of the Oracle Practice at SSC, a systems management consultingfirm based in Chicago (www.saraswati.com).

Steven shares his Rogers Park, Chicago, Georgian with his wife Veva, hisyoungest son Eli, two cats (Sister Itsacat and Moshe Jacobawitz), and Mercury(the Congo Red African Gray parrot). His older son, Chris, is busy making musicand creating art nearby. Steven is a member of the Board of Directors of theCrossroads Fund, which provides grants to organizations in Chicago working forsocial change.

Bill Pribyl, founder and principal of DataCraft, Inc. (www.datacraft.com), has been learning andteaching about Oracle databases and applications for morethan ten years. His work with object-oriented technology dates to themid-1980s, when he coauthored a paper on the application of entity-relationshipmodeling to object-oriented analysis.

A self-avowed Oracle "generalist," Bill has served as an Oracle databaseadministrator for several billion-dollar companies; led the development ofweb-based database applications for online commerce; configured an ultra-highavailability database using Oracle replication; helped NASA apply databasetechnology to space shuttle simulation software; and developed and taughtclasses in PL/SQL, Developer/2000, and the Oracle database. An ardent supporterof the Oracle user community, Bill is past chair of the South Central (USA)Oracle Users Group. He also served as editor-in-chief of Select, the quarterly publication of the International Oracle Users Group-Americas. His work has been published in Oracle user group publications worldwide. He also authored JavaScript programming examples for The Official Netscape LiveWire Pro Book.

Bill lives near his alma mater, Rice University, in Houston, Texas, with hiswife Norma, son Johnny, stepson Geoffrey, four cats, and a deaf Dalmatian. Hevolunteer teaches a class on the Internet and beginning HTML to children inpublic middle school.

Customer Reviews

Average Review:

Post to your social network


Most Helpful Customer Reviews

See all customer reviews

Oracle PL/SQL Programming, 4th Edition 4.5 out of 5 based on 0 ratings. 4 reviews.
Anonymous More than 1 year ago
I have the same problem. You can go to Sephora or another beauty store, and ask an employee there that you need something to keep acne at bay. She will pick out a cleanser (face soap) and a moisturizer for your skin type. Wash your face every day, in the morning and at night, and you can also put some mild tea tree oil on the pimple.
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Guest More than 1 year ago
Are you an application developer or database administrator? Well, you're in luck! Authors Steven Feuerstein and Bill Pribyl, have done an outstanding job of writing a 4th edition of a book that provides comprehensive useful coverage of the PL/SQL language. Feuerstein and Pribyl, begin with an introduction to the PL/SQL language. Then, they show you how to get PL/SQL programs up and running as quickly as possible. The authors continue by reviewing the fundamentals of the PL/SQL language: what makes a PL/SQL statement, an introduction to the block structure, and how to write comments in PL/SQL. They also explore conditional and sequential control statements, loops, and exception handling in the PL/SQL language. They continue by looking at various types of program data you can define in PL/SQL, such as numbers, strings, records, and collections. In addition, the authors next address one of the most central elements of PL/SQL code construction: the connection to the underlying database, which takes place through the SQL language. They also show you the building blocks of applications, which include procedures, functions, triggers, and packages, and how to move information into and out of PL/SQL programs. Then, the authors explore the security-related challenges you face as you build PL/SQL programs. They continue by exploring the inside of PL/SQL, including PL/SQL's use of memory. In addition, the authors provide guidance for PL/SQL developers who need to address issues of globalization and localization. They also provide an in-depth guide to the object-oriented features of Oracle. Finally, they show you how to invoke Java and C code from your PL/SQL applications. If you are new to PL/SQL, reading this excellent book from beginning to end should improve your PL/SQL skills and deepen your understanding of the language. Needless to say, if you're already a proficient PL/SQL programmer, you'll probably want to dip into the appropriate sections of this book to extract particular techniques for immediate application.