如何在oracle PL/SQL程序中调用RDF报表?

How to call RDF report in oracle PL/SQL Procedure?

我想在 oracle pl/sql 过程中调用 RDF 报告,动态 parameter.And 将该报告输出发送到电子邮件。我正在使用 Oracle EBS 12.1.3.

如果报告与数据库位于同一台服务器上,您可以设置一个 DBMS_SCHEDULER 作业,该作业 运行 是一个调用 rwrun 的 shell 脚本,并且在您的 PLSQL 中调用它。

rwrun 命令有通过电子邮件发送结果的选项:

rwrun report=myrep.rdf userid=un/pw@db desformat=pdf DESTYPE=mail DESNAME="u1@myc.com, u2@myco.com" cc="u3@myco.com" bcc="u4@myco.com" replyto="me@myco.com" from="me@mycop.com"

其他选项是使用 UTL_HTTP 或类似方式向 运行 报告发出 rwcgi 请求。

查看此处以了解运行生成报告的可用选项:

https://docs.oracle.com/cd/B14099_19/bi.1012/b14048/pbr_cla.htm#i634293

https://docs.oracle.com/cd/A97329_03/bi.902/a92102/pbr_cla.htm#634395

已编辑以展示如何通过 DBMS_SCHEDULER.

创建

DBMS_SCHEDULER 是 Oracle 的一个高度灵活和可配置的特性,有很多选项,通常提供一些做事的方法,所以下面是一个通用的例子来帮助你入门。

首先创建一个 shell 脚本,其中 运行 报告:

run_rdf.sh:

rwrun report=myrep.rdf ...

现在创建 DBMS_SCHEDULER 作业的脚本:

BEGIN
   DBMS_SCHEDULER.CREATE_PROGRAM (
      program_name=> 'RUN_RDF',
      program_type=> 'EXECUTABLE',
      program_action  => '/bin/bash run_rdf.sh',
      enabled=> TRUE,
      comments=> 'Run RDF report'
   );
END;
/

您可以向该程序添加参数,然后将其传递给脚本:

BEGIN
 DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT (
   program_name            => 'RUN_RDF',
   argument_position       => 1,
   argument_name           => 'arg_name',
   argument_type           => 'VARCHAR2',
   default_value           => '');
END;
/

因此您必须决定是否将 parameters/arguments 硬编码到 shell 脚本中,在上面定义 program_action 时作为命令行参数直接传入,或者通过DEFINE_PROGRAM_ARGUMENT 功能(明白我说的有几种使用方法的意思吗?)。

将此设置为运行可行的工作但不指定时间:

BEGIN
   DBMS_SCHEDULER.CREATE_JOB (
      job_name     => 'RUN_RDF_JOB',
      program_name => 'RUN_RDF',
      start_date => NULL,
      repeat_interval => NULL,
      end_date => NULL,
      enabled => FALSE,
      auto_drop => FALSE,
      comments => '');
END;
/

至运行:

BEGIN
   -- Set arguments values
   DBMS_SCHEDULER.set_job_argument_value('RUN_RDF_JOB',1,'arg1 value');
   DBMS_SCHEDULER.ENABLE_JOB('RUN_RDF_JOB'); -- Might need this
   DBMS_SCHEDULER.RUN_JOB('RUN_RDF_JOB');
END;
/

通过视图监控作业(必要时ALL/USER/DBA):

ALL_SCHEDULER_JOB_RUN_DETAILS
ALL_SCHEDULER_JOB_LOG

将 test.rdf 部署到自定义顶部位置。 Select 系统管理员

  1. 创建可执行文件
  2. 可执行文件名称应用程序名称
  3. 执行方式
  4. 报告 (.rdf) 文件名

通过链接到 test.rdf

创建可执行文件

可执行文件名称应为仅在服务器中可用的报表名称。

创建并发程序并附加:并发程序是可执行文件的实例以及输入参数和不兼容的程序。示例报告的开发和迁移到 Oracle 应用程序并执行。

一个。可执行 b.参数 C。不兼容性

创建并发程序,创建时为此提供可执行文件名称。

单击“参数”选项卡并转到屏幕以提供如下屏幕所示的详细信息。标记值应该类似于 Report Builder 中的参数。

创建请求组并附加并发程序

转到请求组屏幕,创建组或打开现有组以附加我们的并发程序名称。

转到请求组屏幕,创建组或打开现有组以附加我们的并发程序名称。

创造责任

a. Request Group – Collection of Concurrent Programs 
b. Data Group –    Collection of User IDs 
c. Menu – Collection of forms

转到责任屏幕并创建一项责任并将我们的请求组附加到该责任。

创建用户附加责任给用户 转到用户屏幕并将我们的责任附加到现有的业务用户。 运行 通过 SRS 报告 window。

  1. 转到文件 —-> 切换责任 —–a select 责任
  2. 去View—a Request—a>找到然后在screen下面我们就可以了。
  3. 单击“提交新请求”按钮。

点击确定按钮提交单个请求。然后把我们的报告打电话给运行 SRS window.

在单击“确定”按钮之前提供参数值。

单击“否”按钮不提交另一个请求。 单击刷新按钮使我们的报告进入完整的正常阶段。