使用 Report Builder 和 Oracle DB 创建报表 - 第 1 部分






4.62/5 (5投票s)
在本系列文章(共两部分)中,我将分享如何使用 Report Builder 从 Oracle DB 获取数据来创建报表。根据要求,在获取数据之前,我们需要运行一个存储过程,该存储过程将根据给定的参数从表中获取数据,然后我们需要
引言
在本系列文章(共两部分)中,我将分享如何使用 Report Builder 从 Oracle DB 获取数据来创建报表。根据要求,在获取数据之前,我们需要运行一个存储过程,该存储过程将根据给定的参数从表中获取数据,然后我们需要在 Report Builder 中以正确的格式填充数据。
当有机会使用新工具时,我们会在简单的步骤中遇到困难,并花费更多时间来获得结果。因此,我认为分享一些使用 Oracle DB 的 Report Builder 的基本步骤。本文适合初学者 Report Builder 3.0,并尝试连接到 Oracle Database 11g 使用 Oracle SQL Developer。
目录
为了使文章篇幅合理,本文分为两部分。在第一部分中,我们将从使用 SQL Developer 和安装 Oracle 客户端 11g 并进行设置开始。然后,我们将使用 SQL Developer 在 Oracle DB 中创建表和存储过程。最后,在这一部分中,我们将使用 Report Builder 创建一个显示 Oracle DB 数据的报表。
在第 2 部分中,我们将为报表提供参数,执行一些格式化任务,并了解可用的高级选项。
两篇文章的内容按以下大纲排列
第一部分
- 演示概述
- 使用 SQL Developer 测试连接
- 设置 Oracle 客户端
- 创建新表和存储过程
- 创建报表
- 创建带参数的报表
- 格式化报表
- 使用代码进行格式化
- 更多选项
- 参考文献
演示概述
在此演示中,我们使用了 SQL Developer、Oracle 客户端 11g 和 Report Builder 3.0。完成演示应用程序的第 2 部分后,我们将能够看到如下屏幕截图所示的最终报表:(单击图像可获得更清晰、全尺寸的视图)
为什么使用存储过程:我们可以通过 Report Builder 中的 Select 查询本身来获取报表数据。我选择了存储过程,因为在企业应用程序中,根据传递给存储过程的各种参数来获取数据是一种更常见的场景。而且它比使用 select 查询更复杂。因此,我希望使用带参数的存储过程(在第 2 部分中演示)能够使此演示更有帮助。
使用 SQL Developer 测试连接
首先运行 SQL Developer,然后按照以下步骤连接到 Oracle DB 服务器
- 下载 Oracle SQL Developer 并运行。首先单击 Connections,然后选择 "New connection"。您将看到一个弹出窗口,需要在其中填写以下信息
- 连接名称
- 用户名
- 密码
- 主机名
- 端口
- SID(服务器名称)
设置 Oracle 客户端
一旦您能够使用 SQL Developer 连接到 Oracle DB 服务器,就确认了服务器连接参数。
警告:为了通过 Report Builder 访问 Oracle DB,如果尚未安装,则需要为 Windows 安装 Oracle 客户端 11g。否则,您将收到一个大致表示 Report Builder 无法连接到 Oracle DB 的错误。
有以下先决步骤可以使 Report Builder 连接到 Oracle DB。
- 安装 Oracle 客户端
- 设置环境变量
- 配置 tnsnames.oRA 文件
我们将采取以下步骤来设置 Oracle 客户端
- 您需要下载并安装 Oracle Client 软件,该软件可在 Oracle 网站上找到。您需要根据操作系统的详细信息选择合适的安装文件。
- 添加环境变量:现在您需要为 Oracle 添加环境变量。当您安装 Oracle 客户端 11g 时,它将在 C 或 D 驱动器中创建一个名为 "app" 的文件夹,具体取决于您的设置。在我的情况下,它在 D 驱动器中创建了该文件夹。
现在查找 "sample" 文件夹路径,该路径在添加环境变量时需要。对于我的情况,sample 文件夹的路径是
D:\app\userName\product\11.2.0\client_1\network\admin\sample
转到系统属性,单击 "高级系统设置",您将看到如下所示的弹出窗口。
单击 "环境变量" 按钮,您将看到另一个如下所示的弹出窗口。
现在单击 "新建" 按钮,您将看到下一个弹出窗口,填写以下信息:在第一个文本框中,变量名:TNS_ADMIN 在第二个文本框中,变量值:复制到 "sample" 文件夹的路径,如上所述,然后单击 "确定"。我们完成了环境变量设置。
- 配置 tnsnames.oRA 文件:tnsnames.oRA 是一个配置文件,其中包含用于连接到 Oracle DB 的数据库服务器地址。我们可以提供一个映射到数据库的别名。让我们通过提供别名来定义我们的数据库地址。
转到此路径:D:\app\username\product\11.2.0\client_1\network\admin\sample。然后打开 "sample" 文件夹。在那里您会找到 tnsnames.oRA 文件,用记事本打开此文件,并使用如下屏幕截图所示的别名添加您的服务器相关详细信息。
注意:HOST、PORT 和 SERVICE_NAME(服务器名称)必须与您在 SQL Developer 中连接 Oracle DB 时填写的信息相同。
创建新表和存储过程
现在,我们将使用 SQL Developer 创建一个我们将用于报表的表和存储过程。您可以下载随本文附带的 zip 文件,其中包含示例数据和代码片段。
- 创建具有以下字段的表,如以下屏幕截图所示,并在表中填充一些数据。
- 创建一个名为 SP_GETEMPLOYEES 的存储过程。在存储过程中,我们将使用 SYS_REFCURSOR 作为输出参数。代码如下
CREATE OR REPLACE PROCEDURE SP_GETEMPLOYEES (e_recordset OUT SYS_REFCURSOR)IS BEGIN OPEN e_recordset FOR SELECT * FROM EMPLOYEE; END SP_GETEMPLOYEES;
由于此存储过程只有一个简单的 select 查询来从 Employee 表中获取数据,如下所示。
- 现在我们将执行 "SP_GETEMPLOYEES" 存储过程,以验证我们的存储过程是否正常工作。您可以看到执行存储过程的语法。执行 SP 的代码如下
var c refcursor; execute SP_GETEMPLOYEES(:c); print c;
如以下屏幕截图所示,我们执行了存储过程并能够看到数据。
创建报表
现在我们将在 Report Builder 中创建一个报表,并使用 "SP_GETEMPLOYEES" 存储过程来获取数据。为此,我们将按照以下步骤操作
- 打开 Report Builder,右键单击 DataSource,然后单击 "Add Data Source",为其指定适当的名称。单击 "Use a connection embedded in my report" 单选按钮,然后选择连接类型为 "Oracle"。以下是上述操作的屏幕截图
- 单击上面屏幕截图所示的 "Build" 按钮,输入服务器名称。这里的服务器名称将是您在 tnsnames.oRA 文件中提供的连接字符串的别名。我们的别名是 "reportest"。然后输入用户名和密码。单击 "Test Connection"。您将看到 "Test results" 弹出窗口,如下所示。
注意:如果测试连接失败,请验证您在 tnsnames.oRA 文件中填写的信息是否正确,并且该文件中的括号已正确闭合。
- 我们的连接成功了,接下来我们将创建数据集,为此,右键单击 Datasets,然后单击 Add Dataset。
- 从下拉列表中选择存储过程名称,或者您也可以键入存储过程名称,然后单击 OK。
- 当您单击 OK 按钮后,您将能够在 Datasets 文件夹中看到已添加的数据集,如下所示。
- 现在我们将创建一个报表。在 Report Builder 功能区中的 Table 选项卡上,单击 Table Wizard,选择 "choose a dataset",然后单击 next。
- 排列您想在报表中显示的字段。在这里,我们将选择所有字段。从 "Available fields" 区域选择字段并将其拖到 "Values" 区域,如以下屏幕截图所示。然后单击 Finish 按钮。
- 单击选项卡中的 Run 按钮或按 F5 运行报表。报表将为您创建。
到目前为止,我们已经能够创建一个简单的报表。在本文的下一部分中,我们将向 SP 添加参数并进行一些格式化工作。
结论
在本篇文章中,我们学习了如何使用 Report Builder 创建一个简单的报表,同时使用存储过程从 Oracle DB 获取数据。在 第 2 部分中,我们将向存储过程添加参数来过滤数据,在报表中进行一些格式化,并了解可用的高级选项。您的评论和建议非常欢迎。谢谢。