本教程将向您介绍如何使用 Oracle Application Express 操作数据库对象。
大约 30 分钟。
Oracle Application Express 是什么?
Oracle Application Express 是一个适用于 Oracle 数据库的快速 Web 应用程序开发工具。只需要一个 Web 浏览器和有限的编程经验,您就可以快速、安全地开发和部署专业的应用程序。
Oracle Application Express 由哪些组件组成?
Oracle Application Express 包含以下四个主要组件:
| Application Builder |
用于构建以数据库为中心的交互式 Web 应用程序。 |
|
| SQL Workshop | 用于访问数据库对象、运行 SQL 语句和 SQL 脚本。 | |
| Utilities | 用于加载和卸载数据、生成 DDL、运行对象报表以及管理回收站。 | |
| Administration | 用于管理服务和用户,以及监视活动。 | |
术语
使用 Oracle Application Express 时,了解下面这些概念很重要:
| 工作区 | 工作区是一个虚拟专用数据库,允许多个用户在同一个 Oracle Application Express 安装中工作,但保持其对象、数据和应用程序私有。 |
|
| 应用程序 |
应用程序是一个通过分支连接的页面的集合。其属性包括身份验证方法、默认的 UI 模板以及授权规则。 |
|
| 页面 | 页面是一个应用程序的基本构建块。要在 Application Builder 中构建应用程序,您需要创建包含用户界面元素(如选项卡、列表、按钮、项以及区域)的页面。 | |
| 区域 | 内容显示在多个区域中,这些区域是页面的逻辑子部分。每个页面可以包含任意数量的若干不同类型的区域。这些类型包括:HTML 文本、SQL 查询、PL/SQL 生成的 HTML 和图表。每个区域均使用区域模板生成,并由页面模板中定义的显示点来确定在页面上的位置。 | |
| 项 | 项可以是文本域、文本区域、口令、选择列表、复选框等等。项属性决定着页面中项目的显示和行为。例如,这些属性可以决定标签显示的位置、项目的大小以及是将该项显示在前一项的旁边还是下面。项的值自动存储在应用程序的会话状态中,可在用户会话内随时进行引用。 | |
Oracle Application Express 完全位于 Oracle 数据库内。其中只包含表中的数据和大量 PL/SQL 代码。基本上,Oracle Application Express 包含大约 165 个表和 200 个 PL/SQL 对象(内含 300,000 多行代码)。
无论是运行 Oracle Application Express 开发环境还是运行使用 Oracle Application Express 构建的应用程序,过程都是一样的。浏览器发送一个转换为相应 Oracle Application Express PL/SQL 调用的 URL 请求。在数据库处理完该 PL/SQL 后,结果将以 HTML 格式在浏览器中显示。这个循环过程在每次请求或提交页面时都会进行。url 转换背后的方法取决于您的 Oracle 版本。在 10.2.0.3 之前的 Oracle 中运行 Oracle Application Express,需要 Apache 和 PL/SQL 模块。在 Oracle 10.2.0.3 以及更高的版本中(包括 Oracle 快捷版 (XE)),Oracle Application Express 可以使用嵌入式 PL/SQL 网关或 Apache。
应用程序会话状态在 Oracle Application Express 内的数据库表中进行管理,并不使用专用的数据库连接。Application Express 环境中消耗的 CPU 资源最少。如果用户请求了一个页面,在接收到返回页面后进行查看时,又没有发出另一个请求,则数据库可能会停止并在用户查看该结果页面期间重启,而用户不会感觉到任何中断。
Oracle Application Express 3.2 有哪些新特性?
以下是 Oracle Application Express 3.2 中的新特性汇总。
| Forms 转换 |
通过 Oracle Application Express 3.2,可以将 Oracle Forms 源加载到 Oracle Application Express 项目中并生成一个初始 APEX 应用程序。该转换功能可以自动转换大多数用户界面组件,但是不转换在触发器、程序单元或 PL/SQL 库内实现的业务逻辑。将 Oracle Forms 定义加载到 Oracle Application Express 项目中可实现对转换项目的分析和跟踪。生成最初设计后,可以利用 Oracle Application Express 中固有的快速应用程序开发功能来增强和扩展生成的应用程序。可以重新实现 Oracle Forms 中生成后的业务逻辑,并且可以使用 Oracle Application Express 构建器中内置的向导添加利用了 Web 2.0 功能(例如,交互式报表和 flash 图表)的新屏幕。 |
|
| 安全性增强 |
开发 Web 应用程序的安全性最佳实践指出要最小化占用的空间,保护会话状态的完整性,并确保浏览器和服务器之间传输的数据不会遭到破坏。为了与这些最佳实践保持一致,Oracle Application Express 3.2 版改进了安全性措施,使其更具声明性、功能更强大。
|
|
Oracle Application Express 3.1 有哪些新特性?
Oracle Application Express 3.1 版本包括几个主要的新特性和增强功能。
| 交互式报表 |
最终用户可以使用交互式报表区域来定制报表。用户可以通过选择他们感兴趣的列、应用筛选器、高亮显示以及排序来更改报表数据的布局。他们还可以定义分组、聚合、不同的图表以及自己的计算。用户可以创建报表的多种变形,将它们保存为命名的报表,并下载成不同的文件格式,包括逗号分隔的文件 (CSV) 格式、Microsoft Excel (XLS) 格式、Adobe Portable Document Format (PDF)、Microsoft Word Rich Text Format (RTF)。 |
|
| 声明式 BLOB 支持 |
利用声明式 BLOB 支持可通过声明方式将文件上载到表单中以及使用报表下载或显示文件。您还可以通过 PL/SQL 以编程方式显示和下载 BLOB。 |
|
| 增强的报表打印 | 报表查询现在支持多条 SQL 语句,允许在一个文档中包括多个报表或者根据不同的结果集组合报表和图表。打印文档的输出格式现在可以在运行时使用页面或应用程序项进行设置。除了 PDF、Word、Excel 和 HTML 外,文档现在还能够以 XML 格式下载。报表查询和报表区域现在都允许指定将打印文档下载到客户端的方法,如作为附件显示文件下载/保存对话框或者将文档内嵌在浏览器窗口中显示。基于报表区域的打印文档列大小也已得到改进,现在支持基于点和百分比调整列大小。 | |
| 向主题库添加主题 | 除了随 Oracle Application Express 提供的默认主题外,现在还可以向主题库添加主题。这使您可以设计一个满足您公司要求的具有针对性的外观,然后将它作为一个主题发布供所有其他应用程序使用。这可以在工作区级别(工作区主题)或实例级别(公共主题)执行。此外,还添加了两个新的标准主题。 | |
| 可选的仅运行时安装 | 对于测试和生产实例,Oracle Application Express 3.1 版支持可以仅安装 Oracle Application Express 的运行时版本。这最大程度地缩减了安装空间和权限。其中还提供了脚本来删除现有实例中的开发人员接口或向其中添加该接口。这一新特性提高了应用程序的安全性,因为在运行时实例中,开发人员不能有意去更新生产应用程序。 | |
| 提高的安全性 | 新增了一个“隐藏和受保护的”项类型。这种类型的所有项,一旦在 HTML 中发出并发送到浏览器后,就无法在页面的 HTML 源中进行修改了,也无法通过该页面传递到应用程序。它和其他的小改进一起使得默认的安全性功能在 Oracle Application Express 内更加强健。 | |
| 编成文档的 JavaScript 库 | 现在,您可以压缩标准的 JavaScript 和 CSS 文件。所有包括的 JavaScript 文件都已经过压缩以加快页面加载速度。框架也已得到改善以允许高级 Oracle Application Express 开发人员构建和利用自定义 Web 2.0 功能。这增强了性能并使开发人员可以创建更多的应用程序小部件。 | |
| 应用程序日期格式 |
您可以定义一个将在应用程序中使用的日期格式。在应用程序中显示或提交任何页面前将使用该日期格式更改 NLS_DATE_FORMAT 数据库会话设置。所有报表均使用该格式来显示日期,该格式由“Date Picker (use Application Date Format)”类型的表单项获取。可以通过以下步骤实现:
|
|
注:本教程需要的所有文件均位于您计算机的 apex 目录中。
要从电子表格加载本教程的数据,执行以下步骤:
|
. |
输入以下 URL 登录 Oracle Application Express(将 <主机名> 更改为 localhost、指定的主机名或 apex.oracle.com)。 http://localhost:8080/apex
|
|---|---|
|
. |
要登录 Oracle Application Express,请输入以下详细信息,然后单击 Login。
|
|
. |
要创建表,单击 Utilities > Data Load/Unload > Load 旁的向下箭头。
|
|
. |
单击 Load Spreadsheet Data。
|
|
. |
确保将导入目标 (Load To) 设为 New table。为 Load From 选择 Upload file (comma separated or tab delimited) 选项。单击 Next >。
|
|
. |
单击 Browse...
|
|
. |
找到 apex 目录下的 tasks.txt 文件并单击 Open。由于文本文件中的数据是用制表符分隔的,因此在 Separator 域中输入 \t。单击 Next >。
|
|
. |
Table Information 页面显示表中的列及其格式,以及要在创建表后插入到表中的数据。为 Table Name 输入 OBE_TASKS,然后单击 Next >。
|
|
. |
使用 Primary Key 页面,可以向表中添加系统生成的主键并使用一个新序列填充该列。查看默认值,然后单击 Load Data。
|
|
. |
创建表并加载数据后,您将处于 Files 页面上。您可以看到,刚刚上载的包含 16 行的文件已经成功上载。要查看新表,单击 SQL Workshop 选项卡。
|
|
. |
选择 Object Browser > Browse > Tables 旁的向下箭头。
|
|
. |
要查看表定义,单击左侧导航器中表列表下的 OBE_TASKS 表。
|
|
. |
该页面将显示表定义。要查看表中的数据,单击 Data 选项卡。
|
|
. |
您将看到表中的所有数据。您可在此页面中更改表中的任何数据,也可向表中添加行。
|
要使项目名可维护并且能够跟踪有关项目的其他信息,可将项目信息移至单独的表中。执行以下步骤:
|
. |
单击 Table 选项卡。
|
|---|---|
|
. |
单击 Create Lookup Table 按钮。
|
|
. |
要指定创建主表时所基于的列,选择 PROJECT - varchar2,然后单击 Next >。
|
|
. |
输入以下值,然后单击 Next >。 New Table Name:OBE_PROJECTS
|
|
. |
单击 Finish。
|
|
. |
您会看到新的 OBE_PROJECTS 表包含一个数字主键和 PROJECT 列。
|
现在,您已经有两个主表,可以添加一些其他的列来增强 OBE_PROJECTS 表。
为此,执行以下步骤:
|
. |
确保选中了 OBE_PROJECTS 表。准备向该表中添加列。单击 Add Column。
|
|---|---|
|
. |
输入以下值,然后单击 Next >。 Add Column:PROJECT_DEADLINE
|
|
. |
单击 Finish。
|
|
. |
您将看到修改后的表定义,其中已经增加了新的 PROJECT_DEADLINE 列。您还希望再创建一个 PROJECT_PRIORITY 列。单击 Add Column。
|
|
. |
输入以下值,然后单击 Next >。 Add Column:PROJECT_PRIORITY
|
|
. |
单击 Finish。
|
|
. |
PROJECT_PRIORITY 列添加成功。单击 Data 选项卡查看数据。
|
|
. |
您将看到 OBE_TASKS 表中引用的所有项目。您可以在这里更改数据。单击 Public Website 中 PROJECT_ID 左侧的 Edit 图标 (
|
|
. |
为 Project Deadline 输入当前日期之后的一个日期。为 Priority 输入 1。然后单击 Apply Changes。 同样,对其他项目也按照第 8 步和第 9 步那样修改数据,并应用这些修改。例如,可以将 Project Deadline 指定为当前日期之后的某个日期,将 Priority 指定为 1、2 或 3。
|
|
. |
您将看到您添加的数据。另一种创建数据库对象和加载数据的方法是使用脚本。从下拉列表框中选择 SQL Scripts。
|
您可能已经注意到 OBE_TASKS.ASSIGNED_TO 列是个数字。在本主题中,您将运行脚本来创建 OBE_EMPLOYEES 表并加载当前员工列表。每个员工都有一个对应于 OBE_TASKS.ASSIGNED_TO 列中的数字的 EMPLOYEE_ID。执行以下步骤:
|
. |
单击 Upload。
|
|---|---|
|
. |
单击 Browse...
|
|
. |
从 apex 目录中选择 employees.sql,然后单击 Open。为 Script Name 输入 OBE_EMPLOYEES,然后单击 Upload。
|
|
. |
选择 OBE_EMPLOYEES 脚本。
|
|
. |
脚本随即显示。单击 Run。
|
|
. |
单击 Run 确认。
|
|
. |
脚本执行完成。要查看结果,单击 View Results 图标。
|
|
. |
创建了 OBE_EMPLOYEES 表,其中插入了一些数据。单击 SQL Workshop 路径式导航栏。
|
现在,您已经具有了由 OBE_TASKS.ASSIGNED_TO 列引用的员工数据,但还需要标识两个表之间的外键。该外键确保每个 ASSIGNED_TO 列引用一个有效的员工。它还可确保无法删除已分配任务的员工。执行以下步骤:
|
. |
选择 Object Browser > Browse 旁的向下箭头,然后选择 Tables。
|
|---|---|
|
. |
选择 OBE_TASKS 表,然后单击 Constraints 选项卡。
|
|
. |
单击 Create。
|
|
. |
为 Constraint Type 选择 Foreign Key。为 Foreign Key Column 选择 ASSIGNED_TO,为 Reference Table Name 选择 OBE_EMPLOYEES,并从 Reference Table Column List 中选择 EMPLOYEE_ID。然后单击 Next >。
|
|
. |
单击 Finish。
|
|
. |
该约束创建成功。您还需要在 PROJECT_PRIORITY 列上创建一个校验约束,以确保在插入或更新数据时对该数据进行验证。选择 OBE_PROJECTS。
|
|
. |
单击 Create 部分的选项卡。
|
|
. |
为 Constraint on Column 域选择 PROJECT_PRIORITY,并为 Constraint Expression 输入 in ('1','2','3')。确保针对 Constraint Type 选择了 Check。然后单击 Next >。
|
|
. |
单击 Finish。
|
|
. |
该约束创建成功。单击 Home 路径式导航栏。
|
在本教程中,您学习了如何:
![]()
|
|
关于 Oracle | |