PDF Beginning Oracle Application Express 5 3rd Edition Doug Gault download
PDF Beginning Oracle Application Express 5 3rd Edition Doug Gault download
com
https://ebookgate.com/product/beginning-oracle-application-
express-5-3rd-edition-doug-gault/
OR CLICK HERE
DOWLOAD NOW
https://ebookgate.com/product/expert-oracle-application-express-2nd-
edition-doug-gault/
ebookgate.com
https://ebookgate.com/product/beginning-oracle-application-express-
rick-greenwald/
ebookgate.com
https://ebookgate.com/product/agile-oracle-application-express-
patrick-cimolini/
ebookgate.com
https://ebookgate.com/product/expert-oracle-application-express-1st-
edition-dietmar-aust/
ebookgate.com
Expert Oracle Application Express 1st Edition John Edward
Scott
https://ebookgate.com/product/expert-oracle-application-express-1st-
edition-john-edward-scott/
ebookgate.com
https://ebookgate.com/product/beginning-oracle-sql-3rd-edition-for-
oracle-database-12c-lex-dehaan/
ebookgate.com
https://ebookgate.com/product/beginning-oracle-programming-1st-
edition-sean-dillon/
ebookgate.com
https://ebookgate.com/product/oracle-application-server-portal-
handbook-1st-edition-kevin-laahs/
ebookgate.com
https://ebookgate.com/product/beginning-ios-4-application-
development-1st-edition-wei-meng-lee/
ebookgate.com
T HE E X P ER T ’S VOIC E ® IN OR AC L E
Beginning Oracle
Application
Express 5
Your ticket to easy and robust
web-application development using
Oracle’s powerful toolset for
power-users, programmers, and
database administrators
—
Doug Gault
Beginning Oracle
Application Express 5
Doug Gault
Beginning Oracle Application Express 5
Copyright © 2015 by Doug Gault
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed. Exempted from this legal reservation are brief excerpts in connection with
reviews or scholarly analysis or material supplied specifically for the purpose of being entered and executed
on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or
parts thereof is permitted only under the provisions of the Copyright Law of the Publisher’s location, in its
current version, and permission for use must always be obtained from Springer. Permissions for use may be
obtained through RightsLink at the Copyright Clearance Center. Violations are liable to prosecution under
the respective Copyright Law.
ISBN-13 (pbk): 978-1-4842-0467-2
ISBN-13 (electronic): 978-1-4842-0466-5
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol
with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only
in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the
trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are
not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the
material contained herein.
Managing Director: Welmoed Spahr
Lead Editor: Jonathan Gennick
Technical Reviewer: Warren Capps
Editorial Board: Steve Anglin, Louise Corrigan, Jonathan Gennick, Robert Hutchinson,
Michelle Lowman, James Markham, Matthew Moodie, Jeffrey Pepper, Douglas Pundick,
Ben Renow-Clarke, Gwenan Spearing
Coordinating Editor: Jill Balzano
Copy Editor: April Rondeau
Compositor: SPi Global
Indexer: SPi Global
Artist: SPi Global
Distributed to the book trade worldwide by Springer Science+Business Media New York,
233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, email
orders-ny@springer-sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC
and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc).
SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail rights@apress.com, or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use.
eBook versions and licenses are also available for most titles. For more information, reference our Special
Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this text is available to
readers at www.apress.com/. For detailed information about how to locate your book’s source code, go to
www.apress.com/source-code/.
To those in search of knowledge and better understanding,
I dedicate this effort. Hopefully, as your skills grow,
you too will continue to share the wealth.
—Doug Gault
Contents at a Glance
■
■Chapter 1: An Introduction to APEX 5.0����������������������������������������������������������������� 1
■
■Chapter 2: A Developer’s Overview����������������������������������������������������������������������� 7
■
■Chapter 3: Identifying the Problem and Designing the Solution�������������������������� 37
■
■Chapter 4: SQL Workshop������������������������������������������������������������������������������������ 45
■
■Chapter 5: Applications and Navigation�������������������������������������������������������������� 67
■
■Chapter 6: Forms and Reports: The Basics������������������������������������������������������� 107
■
■Chapter 7: Forms and Reports: Advanced��������������������������������������������������������� 167
■
■Chapter 8: Programmatic Elements������������������������������������������������������������������ 231
■
■Chapter 9: Security�������������������������������������������������������������������������������������������� 259
■
■Chapter 10: Application Bundling and Deployment������������������������������������������� 287
■
■Chapter 11: Understanding Websheets������������������������������������������������������������� 309
■
■Chapter 12: A Websheet Example���������������������������������������������������������������������� 339
■
■Chapter 13: Extended Developer Tools�������������������������������������������������������������� 359
■
■Chapter 14: Managing Workspaces������������������������������������������������������������������� 383
v
■ Contents at a Glance
■
■Chapter 15: Team Development������������������������������������������������������������������������� 401
■
■Chapter 16: Dynamic Actions���������������������������������������������������������������������������� 431
■
■Appendix A: Page Designer Walkthrough and Reference���������������������������������� 449
Index��������������������������������������������������������������������������������������������������������������������� 469
vi
Contents
■
■Chapter 1: An Introduction to APEX 5.0����������������������������������������������������������������� 1
What Is APEX?������������������������������������������������������������������������������������������������������������������ 1
A Brief History of APEX����������������������������������������������������������������������������������������������������� 2
Ancient History��������������������������������������������������������������������������������������������������������������������������������������� 2
More Recent History������������������������������������������������������������������������������������������������������������������������������� 2
APEX 5.0 and the Future������������������������������������������������������������������������������������������������������������������������� 3
Summary�������������������������������������������������������������������������������������������������������������������������� 6
■
■Chapter 2: A Developer’s Overview����������������������������������������������������������������������� 7
The Anatomy of a Workspace������������������������������������������������������������������������������������������� 7
APEX Users��������������������������������������������������������������������������������������������������������������������������������������������� 8
Applications, Pages, Regions, and Items������������������������������������������������������������������������������������������������ 9
Workspaces, Applications, and Schemas��������������������������������������������������������������������������������������������� 10
A Final Word on Workspaces���������������������������������������������������������������������������������������������������������������� 12
vii
■ Contents
SQL Workshop�������������������������������������������������������������������������������������������������������������������������������������� 19
Packaged Apps������������������������������������������������������������������������������������������������������������������������������������� 32
Administration and Team Development������������������������������������������������������������������������������������������������ 35
Summary������������������������������������������������������������������������������������������������������������������������ 36
■
■Chapter 3: Identifying the Problem and Designing the Solution�������������������������� 37
Identifying System Requirements���������������������������������������������������������������������������������� 37
Never a Clean Slate������������������������������������������������������������������������������������������������������������������������������ 37
A Broken System���������������������������������������������������������������������������������������������������������������������������������� 38
How Do You Fix Things?������������������������������������������������������������������������������������������������������������������������ 38
Summary������������������������������������������������������������������������������������������������������������������������ 66
■
■Chapter 5: Applications and Navigation�������������������������������������������������������������� 67
The Create Application Wizard���������������������������������������������������������������������������������������� 67
Sample and Packaged Applications����������������������������������������������������������������������������������������������������� 68
Websheet Applications������������������������������������������������������������������������������������������������������������������������� 72
viii
■ Contents
Summary���������������������������������������������������������������������������������������������������������������������� 106
■
■Chapter 6: Forms and Reports: The Basics������������������������������������������������������� 107
APEX Forms������������������������������������������������������������������������������������������������������������������ 107
Form on a Table������������������������������������������������������������������������������������������������������������ 109
Creating a Form on a Table����������������������������������������������������������������������������������������������������������������� 109
Modifying a Form on a Table�������������������������������������������������������������������������������������������������������������� 115
Looking Behind the Scenes���������������������������������������������������������������������������������������������������������������� 120
ix
■ Contents
x
■ Contents
Calendars��������������������������������������������������������������������������������������������������������������������� 213
Understanding Calendar Types����������������������������������������������������������������������������������������������������������� 214
Creating a Calendar���������������������������������������������������������������������������������������������������������������������������� 214
Looking Behind the Scenes���������������������������������������������������������������������������������������������������������������� 222
Charts��������������������������������������������������������������������������������������������������������������������������� 222
Writing Queries for Charts������������������������������������������������������������������������������������������������������������������ 223
Creating a Chart���������������������������������������������������������������������������������������������������������������������������������� 224
xi
■ Contents
Summary���������������������������������������������������������������������������������������������������������������������� 229
■
■Chapter 8: Programmatic Elements������������������������������������������������������������������ 231
Conditions�������������������������������������������������������������������������������������������������������������������� 231
Required Values������������������������������������������������������������������������������������������������������������ 231
Validations�������������������������������������������������������������������������������������������������������������������� 234
Item-Level Validation�������������������������������������������������������������������������������������������������������������������������� 234
Page-Level Validation������������������������������������������������������������������������������������������������������������������������� 238
Tabular Form Validation���������������������������������������������������������������������������������������������������������������������� 240
Computations��������������������������������������������������������������������������������������������������������������� 242
Execution�������������������������������������������������������������������������������������������������������������������������������������������� 242
Types�������������������������������������������������������������������������������������������������������������������������������������������������� 243
Creating a Computation���������������������������������������������������������������������������������������������������������������������� 243
Processes��������������������������������������������������������������������������������������������������������������������� 246
Execution Points��������������������������������������������������������������������������������������������������������������������������������� 247
Process Types������������������������������������������������������������������������������������������������������������������������������������� 247
Processes in the Help Desk Application��������������������������������������������������������������������������������������������� 248
xii
■ Contents
Importing���������������������������������������������������������������������������������������������������������������������� 304
Summary���������������������������������������������������������������������������������������������������������������������� 308
■
■Chapter 11: Understanding Websheets������������������������������������������������������������� 309
Websheet Structure������������������������������������������������������������������������������������������������������ 309
Navigation�������������������������������������������������������������������������������������������������������������������� 311
Content Navigation����������������������������������������������������������������������������������������������������������������������������� 311
Structural Navigation�������������������������������������������������������������������������������������������������������������������������� 313
Help������������������������������������������������������������������������������������������������������������������������������ 313
Markup Syntax������������������������������������������������������������������������������������������������������������� 315
xiii
■ Contents
Annotations������������������������������������������������������������������������������������������������������������������ 337
Administration�������������������������������������������������������������������������������������������������������������� 338
Summary���������������������������������������������������������������������������������������������������������������������� 338
■
■Chapter 12: A Websheet Example���������������������������������������������������������������������� 339
Setup���������������������������������������������������������������������������������������������������������������������������� 339
Creating and Configuring a Websheet Application������������������������������������������������������� 340
Adding Content to a Websheet������������������������������������������������������������������������������������� 345
Creating Data Grids����������������������������������������������������������������������������������������������������������������������������� 345
Applying Constraints��������������������������������������������������������������������������������������������������������������������������� 347
Adding Players������������������������������������������������������������������������������������������������������������������������������������ 348
Creating Alternate Default Reports����������������������������������������������������������������������������������������������������� 349
Creating Page Sections���������������������������������������������������������������������������������������������������������������������� 350
SQL Tags��������������������������������������������������������������������������������������������������������������������������������������������� 357
Access Controls������������������������������������������������������������������������������������������������������������ 358
Summary���������������������������������������������������������������������������������������������������������������������� 358
■
■Chapter 13: Extended Developer Tools�������������������������������������������������������������� 359
Page Locks������������������������������������������������������������������������������������������������������������������� 359
APEX Conflicts������������������������������������������������������������������������������������������������������������������������������������ 360
Locking an APEX Page������������������������������������������������������������������������������������������������������������������������ 360
Unlocking a Page�������������������������������������������������������������������������������������������������������������������������������� 361
Administering Page Locks������������������������������������������������������������������������������������������������������������������ 361
xiv
■ Contents
Summary���������������������������������������������������������������������������������������������������������������������� 382
xv
■ Contents
■
■Chapter 14: Managing Workspaces������������������������������������������������������������������� 383
Learning About Your Environment�������������������������������������������������������������������������������� 383
Viewing Instance Information������������������������������������������������������������������������������������������������������������� 384
Checking the APEX Version����������������������������������������������������������������������������������������������������������������� 385
xvi
■ Contents
Milestones�������������������������������������������������������������������������������������������������������������������� 409
Milestones Report Tab������������������������������������������������������������������������������������������������������������������������ 409
By Owner Tab�������������������������������������������������������������������������������������������������������������������������������������� 410
Features by Milestone Tab������������������������������������������������������������������������������������������������������������������ 410
Features����������������������������������������������������������������������������������������������������������������������� 411
Features Report Tab���������������������������������������������������������������������������������������������������������������������������� 411
History Tab������������������������������������������������������������������������������������������������������������������������������������������ 413
Progress Log Tab�������������������������������������������������������������������������������������������������������������������������������� 413
xvii
■ Contents
■
■Chapter 16: Dynamic Actions���������������������������������������������������������������������������� 431
Dynamic Action Benefits���������������������������������������������������������������������������������������������� 431
Breaking Down Dynamic Actions��������������������������������������������������������������������������������� 431
Dynamic Actions in the Help Desk Application������������������������������������������������������������� 432
Starting Simple����������������������������������������������������������������������������������������������������������������������������������� 432
Using Page-Level Events�������������������������������������������������������������������������������������������������������������������� 439
Dynamic Actions with Multiple Triggering Elements�������������������������������������������������������������������������� 441
Dynamic Actions Using PL/SQL����������������������������������������������������������������������������������������������������������� 443
Dynamic Actions Using JavaScript����������������������������������������������������������������������������������������������������� 445
Summary���������������������������������������������������������������������������������������������������������������������� 447
■
■Appendix A: Page Designer Walkthrough and Reference���������������������������������� 449
Page Designer Overview���������������������������������������������������������������������������������������������� 449
Page Designer Toolbar�������������������������������������������������������������������������������������������������� 451
Tree Pane��������������������������������������������������������������������������������������������������������������������� 453
Central Pane����������������������������������������������������������������������������������������������������������������� 454
Grid Layout����������������������������������������������������������������������������������������������������������������������������������������� 455
Messages������������������������������������������������������������������������������������������������������������������������������������������� 457
Page Search��������������������������������������������������������������������������������������������������������������������������������������� 458
Help���������������������������������������������������������������������������������������������������������������������������������������������������� 459
Index��������������������������������������������������������������������������������������������������������������������� 469
xviii
About the Author
xix
About the Technical Reviewer
xxi
Acknowledgments
First, my heart-felt thanks to all the co-authors of the original version of this book: Karen Cannell, Patrick
Cimolini, Martin D’Souza, and Tim St. Hilaire. Warren Capps also needs to be thanked for his technical
review efforts and his input on content and form. If not for these wonderful people, this book may never
have come to be. The opportunity to work with such a talented and distinguished group of individuals has
been a pleasure.
I’d also like to thank a few people who have been driving forces in my life: Kerry Osborne for providing
me with an immense amount of mentorship and encouragement over the years, even after having left his
employ; Cary Millsap for his friendship and helping to solidify in my mind how to think objectively about
technology and to use proof to find the truth; and last but not least, Scott Spendolini for his all-around
support before, during, and after the book. Without these people, I wouldn’t be where I am today.
—Doug Gault
xxiii
Chapter 1
Welcome to the wonderful world of Oracle Application Express (APEX). You’re about to learn how to use
a tool that will revolutionize the way you think about and approach writing web-based Oracle systems. It
certainly has done so for me.
Prior to the advent of APEX, developing fully interactive, web-based systems for data that resided within
an Oracle database almost always meant learning a new and often complex language like Java, .NET, or PHP
and then figuring out how to integrate your chosen language seamlessly with that data. Often this also meant
trying to incorporate business rules that were already coded in the form of PL/SQL program units.
In such situations, it could take months or even years just to become proficient enough with your
chosen language to begin to write a functional system. If you’re like many developers, you become frustrated
with the fact that you’ve spent an inordinate amount of time doing what seems to be a relatively easy task.
Fear not! The days of long-winded and complex web-development platforms may be behind you.
What Is APEX?
APEX is a 100% browser-based rapid application development (RAD) tool that helps you to create rich,
interactive, Oracle-based web applications very quickly and with relatively little programming effort.
There are many RAD development tools and platforms on the market. If you’re dealing with data that
resides in an Oracle database, a number of things make APEX distinctive and thus more attractive as a
development platform. First and foremost, APEX is built on and uses as its core languages SQL and PL/SQL.
This is a huge advantage for those of you who have already been working with the Oracle database, because
it means you can immediately draw on what you know. Even if you don’t have an Oracle background, but are
going to be working with an Oracle database, you need to learn about its particular flavor of SQL and will at
some point likely find a need for the PL/SQL procedural language.
PL/SQL program units become even more beneficial when migrating from an Oracle-based system that
already has a significant amount of business logic coded into stored PL/SQL program units. In this instance,
you can almost immediately take advantage of that logic with very little effort or changes to the existing code.
Another great advantage is that APEX is a declarative tool that provides a feature-rich core of
functionality designed to make your job easier. Because APEX takes care of many of the underlying functions
common to all web-based applications, you can focus on the logic specific to your application.
A large share of what you need to accomplish can be done using one of the many built-in wizards
provided as part of the APEX Application Builder. The wizards walk you through the process of defining what
you want your application to do and then store that information as metadata. Once a wizard is complete, you
can edit and enhance the functionality or even replace it with your own custom SQL and PL/SQL routines.
After you become proficient with APEX, you might even find yourself bypassing the wizards altogether and
generating more-complex definitions directly.
1
Chapter 1 ■ An Introduction to APEX 5.0
During the course of this book, you’ll likely discover that you want a few other tools at your disposal,
but, in truth, you could easily develop a very rich application using nothing but your web browser and what
APEX provides for you.
Ancient History
APEX has its roots in technology that has been around for quite a while. In fact, parts of the PL/SQL Web
Toolkit, which is used under the covers by APEX to generate the HTML that is sent to the browser, date back
to as early as 1994.
At that point in time, you could actually write web applications in PL/SQL by hand, and unfortunately
many of us did. This required not only a thorough knowledge of PL/SQL and HTML, but also the patience of
a saint and the determination of a headstrong mule. The end result wasn’t very pretty, and it was definitely
not secure by today’s terms, but it was functional, if somewhat limited.
Not long after, Oracle introduced PL/SQL Server Pages (PSPs). This involved first coding the static
HTML and including special Oracle markup to indicate where dynamic data would go. Once you had the
output looking as you wanted, you then ran it through a program called LOADPSP. This would translate
the raw HTML and the special Oracle markup into a PL/SQL procedure that, again, used the PL/SQL Web
Toolkit to emit the HTML, including the dynamic data you requested. At the time, this was a huge leap
forward. I worked at a company where I built an entire framework using PSP technology and deployed it at
several clients.
Finally, in 1997, WebDB came on the scene. The true grandfather of what is now called APEX, WebDB
was revolutionary in that it was a 100% web-based tool that allowed developers to design web applications.
It was written entirely in PL/SQL, even though Java seemed to be taking over the world. Developers could
point WebDB at their database and generate code that would produce forms, reports, charts, and calendars.
There was no session-state management, and there were no templates; once the code was generated, you
couldn’t go back through the tool.
WebDB allowed a large number of companies that wanted to jump on the web-based bandwagon to do
so without spending vast amounts of time and effort retraining their staff. As a tribute to its success, I know
of a number of companies that still have WebDB systems running in production environments.
Unfortunately, WebDB’s days were numbered. Because it generated code (and if you didn’t like the code
it generated, then too bad for you), it had already begun to fade from favor by the time it was absorbed into
Oracle’s Portal product. However, creator Mike Hichwa didn’t forget the glimpse of greatness that WebDB
had seen.
2
Chapter 1 ■ An Introduction to APEX 5.0
Based on the success of the internal calendaring and scheduling system, the team was allowed to
move forward toward making Oracle Flows a product. In 2001, using what was then known as Flow Builder,
Mike and his team began implementing systems for various customers, including one situation where they
managed to replace a Java development project that was going horribly wrong.
By 2003, the team had proven the tool’s power, and they were given permission to release it as a
product. HTML DB 1.5 was released to the public as a no-cost option of Oracle 10gR1.
Since then, various releases have been introduced, each providing improved features and functionality.
The following is a very brief list of the releases and some of the more notable features:
• HTML DB 1.6 (2004) introduced themes, master-detail forms, page groups, page
locking, and some multilingual capabilities.
• HTML DB 2.0 (2005) introduced SQL Workshop, a graphical query builder, a
database object browser, and session-state protection.
• APEX 2.2 (2006) introduced packaged applications, the APEX dictionary views, and
the access control wizard.
• APEX 3.0 (2007) introduced PDF printing with BI Publisher, migration from
Microsoft Access, and page and region caching.
• APEX 3.1 (2008) introduced interactive reports, the runtime-only installation
capability, and improved security.
• APEX 3.2 (2009) introduced a migration helper for Oracle Forms–based systems and
various security enhancements.
• APEX 4.0 (2010) was a huge leap forward, introducing dynamic actions and plug-
ins—declarative ways to introduce server-side logic and extend the core APEX
environment, respectively. Also introduced was the new Team Development
module.
• APEX 4.1 (2011) included a new user-facing data-uploading feature, enhanced error-
handling capabilities, and much-improved support for tabular forms.
• APEX 4.2 (2012) originally introduced some new themes as well as enhancements
to the debugging API, but over its more than two-year life span, patch releases
introduced such changes as HTML 5 charting and deeper security enhancements.
3
Chapter 1 ■ An Introduction to APEX 5.0
allows developers to edit the attributes of several items at once. The only downside to the new Page Designer
is that you may find yourself wanting a bit more screen real estate due to the nature of its layout. However,
with widescreen monitors becoming ubiquitous, this shouldn’t be an issue for most.
Apart from the new Page Designer IDE, one of the most exciting new features of APEX 5.0 is the
Universal Theme. This new application user interface does away with the need for the complex templates
from days gone by and enables developers to build more modern, responsive, and consistent applications
without needing to know the intricate details of HTML, CSS, or APEX template design.
The new Universal Themes (Desktop theme 42 and Mobile theme 51) allow you to adjust a number
of attributes with what is called a Theme Style—a Cascading Style Sheet (CSS) that is added to the base
CSS. This can be done via the new Theme Roller tool, allowing you to visually alter a theme. The Universal
Themes also allow you to easily customize how items on the page are displayed by using Template Options.
After having been in the cards for quite some time, the Flexible Workspace Authentication has finally
been implemented by the APEX team; this allows APEX administrators to define how APEX itself will
authenticate developers. Much like APEX applications, workspaces may now be authenticated against Single
Sign-On servers, LDAP, and so forth.
Interactive Reports are no longer limited to being one-per-page, freeing you from the restriction that
had plagued them since their inception. Interactive Reports also get a few new features. A Pivot View has
been added that allows end users to select the column(s) and provide the function(s) by which to pivot the
report. This was functionality previously available only by either a lot of hand coding or by creating or using
plug-ins. When using the new Universal Theme, Report column headers can now be defined so that they
remain fixed in position while the user scrolls down the page.
Native support for Dialog page types has been introduced, thus allowing any page to be displayed either
normally or as a pop-up dialog. Pages can be defined as either “Modal” or “Non-Modal.” Modal pages do not
allow the end user to interact with the underlying page, whereas Non-Modal pages allow such interaction.
New jQuery Mobile and Tablet themes have been introduced and make use of the newer features of the
latest jQuery Mobile libraries. Panels, pop-ups, and dialogs (among other things) are now all available in the
mobile interface.
An improved charting engine provides enhanced performance for large datasets. Improvements to
accessibility for the visually impaired have been added. A new APEX_AUTHORIZATION package has been
added to aid in the management of authorization within an application. And the list goes on.
As you can see, the APEX core functionality continues to grow with each release. But what you may not
know is that you can help drive the future direction of APEX. By going to the following URL, you can not only
request new features, but also view and vote on features that others have requested. You need an Oracle
Technical Network account, but it’s free and easy to sign up:
https://apex.oracle.com/pls/apex/f?p=55447:1
To get a view of what the APEX team is committed to providing, you can read the most recent Statement
of Direction (SoD). It may take a short time after a release for this to be updated, but it normally contains an
overview of the main functional areas for the next planned release. You can find the SoD at the following URL:
www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html
4
Chapter 1 ■ An Introduction to APEX 5.0
■ Note Oracle provides very good documentation on the installation process for both the database and
APEX, so it isn’t covered in detail here. However, if you’re planning to install APEX on an environment in your
organization, you should coordinate with the database administrator responsible for that instance to ensure that
no mishaps occur.
Web Browser
The APEX documentation states that to view or develop APEX applications, you must have a web browser
that supports cookies, JavaScript, HTML 5, and CSS 3. However, although you can deploy to any browser that
supports these things, the list of supported browsers is fairly narrow. Currently, the following browsers are
supported: Internet Explorer 9+, Firefox 35+, Apple’s Safari 7+, and Google Chrome 40+.
Without getting into a religious debate about which web browser is the best on the market, the author’s
preference for development is either Firefox or Chrome due to the number of developer tools and add-ons
that can help you with APEX development. Note that because of the difference in the way each browser
interprets HTML and JavaScript, you must test your application in any and all web browsers that your target
audience might use.
SQL Developer
As mentioned before, all the exercises and scripts in this book can be loaded and run directly within the
APEX interface. However, if you have chosen to install or have access to a local instance of the Oracle
database, a SQL IDE will definitely make your life easier.
5
Chapter 1 ■ An Introduction to APEX 5.0
SQL Developer is a free SQL and PL/SQL IDE provided by Oracle. You can download SQL Developer
from the OTN’s home page at http://www.oracle.com/sqldeveloper.
Using SQL Developer, you can browse database objects, edit row data, develop and test stored PL/SQL
program units, code and test SQL statements, and interactively debug PL/SQL code. SQL Developer also
has many direct integration points with APEX that make reporting in, monitoring, and maintaining APEX
instances and applications easier. This book doesn’t cover those, but it’s definitely worth your time to look
into this tool.
Summary
Oracle Application Express has come a long way from its simple beginnings, and the APEX community is
poised at the beginning of a new cycle of growth. APEX 5.0 provides so much possibility and promise that
it’s hard not to be excited about what the future holds. With that spirit, you’re ready to begin your journey to
discover how APEX can make development easier and more fun.
6
Chapter 2
A Developer’s Overview
You’re probably anxious to get started, but there are a few concepts you should understand before you jump
into APEX development headfirst. This chapter will introduce the fundamental development architecture of
APEX and then walk you through the different areas of the developer interface.
You will delve deeper into the details as you go through the book and put the architecture to work, but
it will help tremendously to know how things are structured ahead of time. This chapter is designed to ease
you in, but it isn’t a complete guided tour of every nook and cranny. Be patient; you’ll get there.
7
Chapter 2 ■ A Developer’s Overview
APEX Users
To log in to an APEX workspace, you must have access to a valid APEX user. A number of different user roles
are available that dictate what you can do when you log in. The roles are as follows:
• Instance Administrators are special users who manage and maintain the overall
APEX instance. They can set instance-level preferences and messages, create and
manage workspaces, monitor space utilization, and perform many other actions
related to the overall APEX installation. Instance Administrators are only able to
log in to the special INTERNAL workspace, which houses the APEX Admin Services
application.
• Workspace Administrators are responsible for managing the details of a specific
workspace and can manage user accounts related to the workspace, monitor
workspace activity, view log files, override developer locks and settings, and so
on. Although it isn’t good practice, the Workspace Administrator can also act as a
Developer, creating and modifying applications.
• Developers are the users who create and edit the applications in the workspace. They
have access to the underlying tables in the schema(s) assigned to the workspace
and may create and modify database objects and stored PL/SQL units. Most people
writing APEX applications only need this level of access.
• End Users are only able to run applications in a workspace. They don’t have direct
access to any of the underlying database objects, nor do they have access to any of
the APEX development modules. End users can’t log directly into a workspace.
With the exception of the APEX Instance Administrator, in a default installation APEX users are specific
and unique to a workspace, meaning you can have users with the same name in multiple workspaces in a
single APEX instance, but each of these users is unique. They can have their own passwords and settings and
aren’t linked together in any way.
APEX 5.0 introduces the ability to use an external repository, such as Single Sign-on or LDAP, as a source
to assign and validate APEX users, meaning that a single user could have access to multiple workspaces.
However, this functionality is not set up by default and requires an Instance Administrator to configure.
When you’re developing, you should get in the habit of logging in as a Developer as opposed to a
Workspace Administrator. Several safeguards are available to help keep developers from stepping on each
other in a workspace. If you log in as a Workspace Administrator, these safeguards are bypassed, and you
may accidently interfere with something someone else is working on. Although this isn’t a problem in a
workspace with only one developer, it’s still good to get into that habit.
8
Chapter 2 ■ A Developer’s Overview
■ Note This book uses the last three types of user. It assumes that APEX has been installed, a workspace
has been created, and you have been given the Workspace Administrator’s login credentials. If you’re using
the hosted instance at apex.oracle.com, then the user name you were given when you signed up has the
credentials of a Workspace Administrator. If, however, you’re using a local instance, either refer to the APEX
documentation or get your Instance Administrator to help you set up a workspace.
9
Chapter 2 ■ A Developer’s Overview
Applications are basically groups of pages that perform a task (or set of tasks) related to a business
function. During the course of this book, you’ll build one application in a single workspace, but it’s
important to know that in a typical development environment, you’ll probably be working on many
applications across several workspaces.
Pages are the basic building blocks of applications and contain both the user-interface (UI) components
and the programming logic that processes the user’s input. We cover the rendering of the UI versus the
processing of user input later, but for now consider a page to be roughly equivalent to a screen in desktop
UI lingo.
Regions are UI items that serve as content containers. You can have any number of regions on a page,
and regions can be nested in other regions. This gives you the opportunity to create things like dashboards,
where you might nest a data report region and a graph region in a single parent HTML region.
Items are the HTML form elements that are used to present the UI to the user. These include things such
as buttons, select lists, text fields, check boxes, radio groups, and so on. There are two categories of items:
page-level items and application-level items. The difference is that the latter are defined at the application
level and aren’t rendered directly on the page. You can think of these as global variables. Page-level items
are defined on a specific page and are assigned to a region in order to control where and how they display to
the user.
There is obviously a lot more to an application than these simple building blocks, but if you understand
the basic hierarchy between these, you’ll have a jumpstart when it comes to building your first pages and a
solid foundation when it’s time to perform more intricate tasks.
When a workspace is created, it’s linked with at least one, and possibly many, underlying database
schemas. This provides access to database objects such as tables, views, stored PL/SQL program units, and
so on.
When an application is created, it’s assigned a single “parse as” schema from the list of schemas
associated with the workspace. A “parse as” schema is the Oracle database user in which all SQL queries
and PL/SQL calls run by that application are executed. So, if your application was defined with a “parse as”
schema of DOUG, a query such as
10
Chapter 2 ■ A Developer’s Overview
Because APEX applications are portable and may not necessarily be run in the same schema they were
developed in, it’s not good practice to hard code the schema names into your SQL or PL/SQL. Instead, APEX
provides a replacement variable (one of many you’ll be introduced to throughout the course of this book) for
the “parse as” schema. The #OWNER# replacement variable is substituted for the actual “parse as” schema for
the application at runtime. So the statement
resolves to
In the most common implementations, a workspace is created and associated with a single underlying
database schema. The applications developed in that workspace have their “parse as” schema set to the only
schema associated with the workspace and use the database objects belonging to that schema.
Where a workspace has more than one schema assigned to it, things can become a little more complex.
You might be tempted to think that if you associate three schemas with a workspace, any application in that
workspace can automatically access the data in all three schemas. However, you would be mistaken.
Because an application is assigned one—and only one—“parse as” schema, all SQL statements and PL/
SQL calls are executed as that schema. Although the workspace may be associated with multiple schemas,
the application itself isn’t. If you want to access data in a schema other than the application’s “parse as”
schema, you must make sure the correct database-level grants are in place, just as you would when using
any other Oracle tool or development environment.
Take a look at the example shown in Figure 2-4, where two tables you wish to join as part of a SQL
statement are owned by separate schemas.
If your “parse as” schema is DOUG, then you must be specifically granted privileges on the objects in the
JOEY schema to be able to access it. To do this, you sign on to the database as JOEY (or as a DBA) and grant
the appropriate database privileges on JOEY.DEPT to DOUG.
In this example, if you needed to join the two tables together in a select statement, granting the SELECT
privilege on JOEY.DEPT to DOUG would suffice. Then, you could write your select statement as follows:
select e.empno,
e.ename,
d.dept_name,
d.location
from #OWNER#.emp e,
JOEY.dept d
where e.deptno = d.deptno
The #OWNER# substitution variable would be resolved to your “parse as” schema (DOUG), and the join
would work correctly as long as the correct privileges were in place.
11
Chapter 2 ■ A Developer’s Overview
■ Note Because the grants that allow the select from the JOEY schema are put in place at the database
level, it isn’t necessary to associate the JOEY schema to your workspace. You only need to associate a schema
to a workspace if you’ll be using it as the “parse as” schema for an application in that workspace or need to
access the schema objects directly from within the SQL Workshop.
12
Chapter 2 ■ A Developer’s Overview
13
Chapter 2 ■ A Developer’s Overview
Along the top is the navigation bar containing the main navigation structure available to you throughout
the developer interface. It gives direct access to many of the sections you will need quick access to while
you’re developing applications. It’s worth noting that each main option of the menu bar is broken down
into two pieces. For instance, if you click directly on the Application Builder item, you’re immediately taken
to the Application Builder home page. However, if you click the small downward-pointing arrow just to the
right, you’re presented with a more detailed drop-down menu that lets you choose your destination a bit
more granularly, as in Figure 2-7
14
Chapter 2 ■ A Developer’s Overview
At the right of the navigation bar is a set of four menu options represented by icons, as shown in
Figure 2-8.
First is a search icon that, when clicked, allows you to perform context-sensitive searches. The context
of the search depends on where you are in the Application Builder. For instance, if you’re on the workspace
Home page, your search is across the entire workspace. However, if you’re in the Application Builder or the
Administration section, the search is limited contextually to those specific areas.
Second is the Administration menu. This menu will be available to you whether you are a Workspace
Administrator or a Developer. The difference will be what functionality you have access to. Developers will
have access to monitoring certain areas of the workspace activity and to the dashboards, while Workspace
Administrators will have full access to all functionality including user maintenance and service requests.
Third is the help menu, which provides access to online documentation, the APEX Support Forums, the
APEX section of the Oracle Technical Network site, and an About section.
Last is a link to the profile of the currently logged in user. Here, the user will be able to edit their details,
update their profile picture, and change their password.
At the very bottom of the browser is an information region that displays the currently logged in user, the
current workspace, the language, and the current version of Oracle APEX.
15
Chapter 2 ■ A Developer’s Overview
The rest of the page is dedicated to either giving you a quick link to the four main sections or providing
you with information about what’s going on in the workspace.
The first two regions, from left to right, show an overview of the activity in the workspace. They show the
Top Applications and the Top Users in the workspace. The News & Messages region allows the developers
in a workspace to enter information they want others in the workspace to see. In a new workspace, there
probably won’t be anything in these regions, but as you work your way through the book, you’ll see that start
to change.
Notice that most of the main pages for each section of the development environment adhere to this
dashboard-style home page interface, the notable exception being the Application Builder. Let’s look at that
section first.
Application Builder
The Application Builder is the core of the APEX application-development environment. Whereas you’ll use
the SQL Workshop to manipulate the underlying database objects, you’ll use the Application Builder to do
most of the real work when it comes to coding, testing, and debugging your applications.
16
Chapter 2 ■ A Developer’s Overview
Figure 2-9 shows one application in the workspace, named Sample Master Detail. However, there isn’t
much information about it other than its name and the application ID (118). This is where you begin to see
the beauty of what APEX can do, not only in the developer UI, but also in your applications.
The list of applications you see is actually a style of report called an Interactive Report (IR). IRs allow us
to customize how reports and their contents are displayed. IRs are used throughout the APEX development
interface and can also be used when creating your own applications. They’re extremely powerful tools, and
you’ll use them a lot.
On the right side of the page are three regions that show About information, recently edited
applications, and a link to the Application Migration wizard. You will deal more with these later; for now, we
will drill in to see the details of an application.
17
Chapter 2 ■ A Developer’s Overview
Notice the way the page is structured, with page-related tasks and recently edited pages presented along
the right side of the page. This layout will become a familiar theme as you navigate through the interface.
From here, you can click any of the listed pages to edit that page using the Page Designer. You can also
run, export, and import the application, edit the supporting objects or shared components, and access the
application-related utilities.
18
Chapter 2 ■ A Developer’s Overview
One of the biggest changes is that, due to the single-page interface, alterations to a page must now be
explicitly saved. While this may seem disruptive, it actually brings with it some useful functionality. For
instance, now multiple changes can be made and saved all at once, potentially reducing development time.
Also, unsaved changes can now be easily undone.
Another major time-saving feature is the ability to select multiple components on a page using
Shift+Click (or Cmd+Click on Mac). Once multiple items are selected, you can edit their common
properties in the property editor. This can be useful if, for instance, you want to edit the attributes of all
buttons on a page to set their visual properties to all be the same.
Region and item placement has been enhanced with the introduction of a drag-and-drop interface. All
rendering components can be easily placed or rearranged on the page.
The layout of the new Page Designer is quite in-depth and, if you’re not familiar with it, can potentially
be a bit perplexing. Appendix A at the back of this book will give you a detailed tour of the Page Designer and
its components, laying out the nomenclature that will be used through the rest of this book. Take a moment
to thumb through Appendix A to familiarize yourself with the terms and the placement of the tools.
It is my goal for the rest of this book to take you through the development process in a way that will
help you naturally learn how to use the Page Designer. However, if you’re ever confused by an instruction or
forget what a particular tool is called, referring to Appendix A should help clear things up.
SQL Workshop
The SQL Workshop is a suite of tools that provides developers with the ability to view and manage database
objects in the underlying schema(s) assigned to the workspace. The SQL Workshop home page shown
in Figure 2-11 lets you access each of the underlying tools and gives some high-level information about
recently created objects and commands that that have been run.
19
Chapter 2 ■ A Developer’s Overview
Because there may be more than one schema assigned to the workspace, a schema-selection dialog
at right allows you to select and set the default schema for all the tools. You may change the schema you’re
working in within each of the tools as well.
The main tools available as part of the SQL Workshop are displayed in the toolbar at the top of the page.
Each of the individual tools deserves its own introduction, so let’s spend some time now looking at what they
are and what they can do. You’ll use this area of APEX more heavily when you create the database objects for
your application.
20
Chapter 2 ■ A Developer’s Overview
The name Object Browser is somewhat of a misnomer, because the tool can be used not only to browse
the objects in the underlying schema(s), but also to create new objects, browse and edit data, delete objects,
and edit object definitions. Although there are some limitations on the types of objects it can manipulate, it’s
powerful enough to do most of the daily tasks that an application developer needs to tackle.
You choose the object type you want to work with by selecting it from the drop-down list in the upper-
left corner. You can search the selected object type by entering a text string in the search box just below it
and clicking the refresh icon to the right. Clicking the name of an object displays its properties along with
links to drill into more details.
Although the interface for the Object Browser is pretty intuitive, there are some interesting things to note. In
the upper-right corner is a drop-down list that allows you to set the current schema. The list contains all schemas
currently assigned to the workspace. You can switch between them simply by choosing a new one from the list.
21
Chapter 2 ■ A Developer’s Overview
22
Chapter 2 ■ A Developer’s Overview
Although its core function is quite straightforward, the SQL Commands interface is more robust than
it first appears. Beyond the ability to save and retrieve SQL and PL/SQL, it can also run explain plans on
statements and allow you to view your statement history. Therefore, if you ran a script or statement that was
particularly useful, but you forgot to save it, you still have the ability to retrieve it from the history buffer.
The SQL Commands interface also integrates with the Query Builder (described later), allowing you to
load and manipulate saved statements that were built in the Query Builder.
■ Note By default, all SQL statements executed via the SQL Commands interface are automatically
committed. To override this setting and enter into transactional mode, uncheck the Autocommit check box in the
toolbar. Once this is done, you can manually both commit and roll back your SQL statement.
There is no way to turn off Autocommit permanently, so you need to remember to do this any time you want to
enter transactional mode.
23
Chapter 2 ■ A Developer’s Overview
In this example, one script, called database_objects.sql, is loaded into the script repository. By
clicking the Edit icon, you can edit the contents of the script, as shown in Figure 2-15. Helpfully, APEX
provides syntax highlighting in the Script Editor. The editor also has a Find and Replace function and
autocomplete, as well as undo and redo capabilities.
You can also download the script to a local file so you can edit it in your favorite local text editor. When
you’re done, simply cut and paste it back into the editor or upload it as a new script file.
24
Chapter 2 ■ A Developer’s Overview
■ Note When you upload a script file to the repository, the name of the script must be unique. You can’t
overwrite an existing script file of the same name with a new version without first deleting the existing script
from the script repository.
Once a script is ready to run, you can click the Run icon in the list (or the Run button in the editor), and
you’re stepped through the Run Script wizard. This allows you to choose whether you want to run the script
immediately or run it in the background. If you choose Run in Background, your script is entered into a
queue, and it is executed when it reaches the front of the queue.
Either way, you’re taken to the Manage Script Results page of the SQL Scripts interface, as shown in
Figure 2-16. This screen allows you to see the status and certain high-level details of the script’s execution. In
the case of scripts that have been submitted in batch mode, you can also see the status of specific scripts in
the queue.
25
Chapter 2 ■ A Developer’s Overview
Clicking the View Results icon shows you the final results of running the script. In Figure 2-17, you can
see that the script had errors, the details of which are displayed in the body of the report. If the script were
successful, no errors would be shown, and the statement results at the bottom of the page would show
zero errors.
■ Note Although both the SQL Commands and the SQL Scripts interfaces can accept and run standard SQL
statements, the extended commands of SQL*PLUS aren’t valid in these tools.
The SQL Commands interface throws an error when it encounters any SQL*PLUS-specific commands. However,
the SQL Scripts interface warns the user of the existence of SQL*PLUS commands in a script being run and then
ignores them if the user chooses to continue. Because of this, the SQL Commands and SQL Scripts interfaces
can’t perform many of the functions of extended SQL*Plus scripts.
26
Chapter 2 ■ A Developer’s Overview
From here, you can begin to build your query. To include a table in your select statement, simply click
it in the list to the left. A representation of the table is placed in the blank region of the screen above the
Conditions region. You may add as many tables as you like to your query, and can even include the same
table more than once by clicking it again. Notice that if you include more than one instance of the same
table, the new instance is suffixed with a sequence number differentiating it from the original table.
27
Chapter 2 ■ A Developer’s Overview
Figure 2-19 shows an example graphical representation for the DEMO_ORDERS table and outlines the
different interactive features.
Taken from top to bottom as they appear in Figure 2-19, these action areas are as follows
• Table Actions displays a dialog allowing you to do one of several things:
• Check All allows you to quickly select or deselect all columns of the object for
inclusion in the query being built.
• Add Parent allows you to select and add a parent table, as defined by foreign-
key relationships, to the Query Builder.
• Add Child allows you to select and add a child table, as defined by foreign-key
relationships, to the Query Builder.
• Show/Hide Columns expands and collapses the object so the column definitions are
shown or hidden.
• Remove deletes the table and any of its related clauses from the select statement.
• Select Column for Join is activated by clicking the blank square next to a column
name. Doing so darkens the square and puts the Query Builder into Table Link
mode. Then you can click another blank square, either in another table or in the
same table, and the Query Builder inserts an EQUALITY where clause between the
two columns in the SQL statement.
28
Another Random Document on
Scribd Without Any Related Topics
languages. And it is not only history and the languages; it is
literature in general from which Émile is excluded by Rousseau. No
book shall be put into his hands, not even the Fables of La Fontaine.
It is well known with what resolution Rousseau criticises The Crow
and the Fox.
319. The Third Book of the Émile.—From the twelfth to the fifteenth
year is the length of time that Rousseau has devoted to study and to
intellectual development proper. It is necessary that the robust
animal, “the roe-buck,” as he calls Émile, after a negative and
temporizing education of twelve years, become in three years an
enlightened intelligence. As the period is short, Rousseau disposes of
the time for instruction with a miser’s hand. Moreover, Émile is very
poorly prepared for the rapid studies which are to be imposed on
him. Not having acquired in his earlier years the habit of thinking,
having lived a purely physical existence, he will have great difficulty
in bringing to life, within a few months, his intellectual faculties.
But without dwelling on the unfavorable conditions of Émile’s
intellectual education, let us see in what it will consist.
326. Émile learns a Trade.—At the age of fifteen, Émile will know
nothing of history, nothing of humanity, nothing of art and literature,
nothing of God; but he will know a trade, a manual trade. By this
means, he will be sheltered from need in advance, in case a
revolution should strip him of his fortune.
“We are approaching,” says Rousseau, with an astonishing
perspicacity, “a century of revolutions. Who can give you assurance
of what will then become of you? I hold it to be impossible for the
great monarchies of Europe to last much longer. They have all had
their day of glory, and every State that dazzles is in its decline.”
We have previously noticed, in studying analogous ideas in the
case of Locke, for what other reasons Rousseau made of Émile an
apprentice to a cabinet-maker or a carpenter.
É
329. The Fourth Book of the Émile.—The development of the
affectionate sentiments, the culture of the moral sentiment, and that
of the religious sentiment, such is the triple subject of the fourth
book,—vast and exalted questions that lend themselves to eloquence
in such a way that the fourth book of the Émile is perhaps the most
brilliant of the whole work.
T H E P H I L O S O P H E R S O F T H E E I G H T E E N T H C E N T U R Y.—
C O N D I L L A C , D I D E R O T, H E L V E T I U S , A N D K A N T.
ebookgate.com