Application Express

Next

About Application Express

Oracle Application Express (Oracle APEX), formerly called HTML DB, is a fully supported "no-cost" option of the Oracle Database. Oracle Application Express is certified against all editions of the Oracle Database 10.2.0.3 and above, including Oracle Database 10g Express Edition (Oracle XE).

Oracle Application Express installs as part of the seed database installation with Oracle Database 11g. The latest version of Oracle Application Express can be downloaded for free from the Oracle Technology Network (OTN) [http://otn.oracle.com/apex]

Browser Based

Using only a Web browser and limited programming experience you can develop data centric applications in minutes. Browser-based development enables you to develop applications on most computers using only a modern Web browser.

Rapid Application Development (RAD)

Use simple wizards and declarative programming to create powerful reporting and data entry applications. You can create applications from spreadsheet uploads, or on existing database tables and views. Oracle Application Express includes SQL Workshop to create and manage the database objects that support your application.

Application Express Components

Application Builder - Database Applications

Application developers use wizards to declaratively assemble applications organized in pages. Page content is organized into regions. Regions can contain text, custom PL/SQL, reports, charts, maps, calendars, web service references or forms. Forms are made up of fields (called items) which can be selected from the multitude of built-in types (such as text fields, text areas, radio groups, select lists, check boxes, date pickers, and popup list of values) or a developer can create their own types using plug-in support. Table update functionality is built-in and PL/SQL can be used to process data. Session state (or application context) is transparently managed and the user interface presentation is separated from the application logic so that the look and feel of an application can be changed simply by selected a different theme.

Application Builder - Websheets

Using Websheet Applications, end users can manage structured and unstructured data without developer assistance. Page sections contain unstructured data and are edited using a WYSIWYG editor. Reports provide access to database data by writing SQL. Data Grids can manage structured data without writing SQL. Adding columns, renaming column, and validations are defined using runtime dialogs. Each page and row of data grid data can be annotated with files, tags, notes, and links. Pages can contain sections as well as reports and data grids and all can be linked together providing navigation. All information is searchable and completely controlled by the end-user.

SQL Workshop

The SQL Workshop provides tools that enable you to view and manage database objects. Object Browser enables you to use a tree control to view object properties and create new objects. The SQL Command tool enables you to enter ad-hoc SQL. Query Builder enables you to create join queries using drag and drop. SQL Scripts enables you to store and run scripts. The Data Workshop enables you to load and unload text, DML, and spreadsheet data.

RESTful Services

RESTful Services allow for the declarative specification of RESTful services mapped to SQL and PL/SQL.

Team Development

Team Development helps manage the life-cycle of an application's development. It provides tracking and management of application features, to do entries, bugs, and end user feedback. Team Development is tightly integrated with the Oracle Application Express Application Builder. For example, edit page lists open feedback, bugs, and to do's.

Administration

Each Oracle Application Express workspace is a separate application development environment that is fully insulated from other workspaces. The administration component provides workspace management, including services (available schemas, space requests, and preferences), users (both developers and end-users), and workspace activity (page views, login attempts, and developer activity). Access is limited to Oracle Application Express developers who have workspace administration privileges.

Declarative Development

With Application Express, coding is declarative. That means that no code is generated or compiled. You interact with wizards and property sheets. Since the SQL language is used to define reports and charts, some knowledge of SQL is helpful. If procedural logic is needed, you can write snippets of code using PL/SQL. Declarative code yields fewer differences between developers and this consistency makes Application Express applications easy to maintain and manage.

The Application Express engine renders applications in real time from data stored in database tables. When you create or extend an application, Oracle Application Express creates or modifies metadata. When the application runs, the Application Express engine then displays the page or processes the page submission based on the metadata. This means that multiple developers can edit the same page and changes can be seen immediately when running the application. No compilation or deployment is necessary.

Examples of declarative programming in Oracle Application Express:

Forms

Using wizards, you can easily create forms on tables or on a stored procedure. When creating a form on a table, these wizards provide automatic management of insert, update, and delete as well as lost update detection. Once you create a form, you can rearrange form fields (called form items) using a visual representation, enabling you to quickly achieve the layout you want.

Interactive Reports

To create an interactive report, developers either select a table or provide a SQL statement. They can then restrict the capabilities available to end users (such as turning off download, not allowing a column to be hidden) if desired. The end user is presented with the report and the functionality is the same across all reports in the application (for example, how to filter, highlight, subscribe and save custom views).

Session State

Oracle Application Express transparently manages session state in the database. There is no SET and GET, Oracle Application Express handles it all for you. Application developers can access session state using simple substitutions as well as standard SQL bind variable syntax. Creating a process to clear session state for a page is as simple as a few clicks of the mouse and specifying the desired page.

Internal Server Error

500 - Internal Server Error

Request Path passes syntax validation
Mapping request to database pool: PoolMap [_poolName=apex, _regex=null, _workspaceIdentifier=null, _failed=false, _lastUpdate=-1, _template=null, _type=REGEX]
Applied database connection info
Attempting to process with PL/SQL Gateway
==== Processing Request: ====
GET /apex/f?p=4600:6:28461141786044::NO:::
==== Headers in Request ====
accept: */*
user-agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
cookie: ORA_WWV_USER_63113586886954=ORA_WWV-lJLc5In5jNNzXjtj0MP4CwtK
accept-encoding: gzip, br, zstd, deflate
referer: http://reconquistatramites.gov.ar:9095/apex/f?p=4600%3A6%3A12323624570760%3A%3ANO%3A%3A%3A
host: reconquistatramites.gov.ar:9095
==== Cookies in Request ====
ORA_WWV_USER_63113586886954 =  ORA_WWV-lJLc5In5jNNzXjtj0MP4CwtK
request parameter: p=4600:6:28461141786044::NO:::
isValidRequest(), procedure name: 
Validating: f
*** Total number of arguments: 15
SID: 183
Parse: 0 ms
-----
begin 
 f(p=>?);
commit;
  end;
*** Total number of arguments: 15
{p=4600:6:28461141786044::NO:::}
p=4600:6:28461141786044::NO:::
p= 4600:6:28461141786044::NO:::
Exec: 309 ms
Got results length: 14905
==== Headers from Results ====
Setting Content-Type (Content-type): text/html; charset=utf-8
Adding X-Frame-Options: DENY
Adding X-DB-Content-length: 14905
Processed PL/SQL Gateway request

WebException [statusCode=500]
	at oracle.dbtools.rt.web.WebException.webException(WebException.java:343)
	at oracle.dbtools.rt.web.WebException.internalError(WebException.java:262)
	at oracle.dbtools.rt.web.WebErrorResponse.internalError(WebErrorResponse.java:101)
	at oracle.dbtools.rt.web.WebErrorResponse.error(WebErrorResponse.java:75)
	at oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.java:132)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.util.ConcurrentModificationException
	at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
	at java.util.AbstractList$ListItr.set(AbstractList.java:409)
	at java.util.Collections.sort(Collections.java:121)
	at oracle.dbtools.apex.statistics.Statistics.toString(Statistics.java:226)
	at oracle.dbtools.apex.statistics.Statistics.print(Statistics.java:174)
	at oracle.dbtools.apex.statistics.Statistics.finishRequest(Statistics.java:141)
	at oracle.dbtools.apex.ModApexContext.close(ModApexContext.java:324)
	at oracle.dbtools.common.util.Closeables$2.closeType(Closeables.java:155)
	at oracle.dbtools.common.util.Closeables$2.closeType(Closeables.java:149)
	at oracle.dbtools.common.util.Closeables$BaseCloser.close(Closeables.java:239)
	at oracle.dbtools.common.util.Closeables.close(Closeables.java:97)
	at oracle.dbtools.apex.ModApex.close(ModApex.java:176)
	at oracle.dbtools.apex.ModApex.doGet(ModApex.java:101)
	at oracle.dbtools.apex.ModApex.service(ModApex.java:301)
	at oracle.dbtools.rt.web.HttpEndpointBase.modApex(HttpEndpointBase.java:347)
	at oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.java:130)
	... 13 more