oracle EBS中的绑定参数

Posted

技术标签:

【中文标题】oracle EBS中的绑定参数【英文标题】:bind parameter in oracle EBS 【发布时间】:2021-06-22 19:55:03 【问题描述】:

我需要将值列表添加到 oracle 电子商务套件中报表生成器的 bin 参数中

但在这个值列表中,我需要的第一个选项是 all,其他值是 select 语句的结果,如下所示:

all
10
20
30
....

所以如果用户点击“全部”,报告将查询所有部门 如果用户点击任何其他特定部门,报表将查询该特定部门

我怎样才能添加这个“全部”选项??

【问题讨论】:

【参考方案1】:

我不使用 EBS,但我知道报告和一些 SQL,所以 - 这是我的建议。

添加“all”选项很简单 - union 它带有其他值。像这样的:

SQL> select value
  2  from (select 1 rn, 'all' value from dual
  3        union all
  4        select 2 rn, to_char(deptno) from dept
  5       )
  6  order by rn, value;

VALUE
----------------------------------------
all
10
20
30
40

SQL>

然后,在查询中,您将其用作

select e.deptno, e.ename, e.job
from emp e
where e.deptno = case when :par_deptno = 'all' then to_char(e.deptno)
                      else :par_deptno
                 end
order by e.deptno, e.ename;

上面的例子,在 SQL*Plus 中运行(所以不要介意替换而不是绑定变量):

首先,我通过10

SQL> select e.deptno, e.ename, e.job
  2  from emp e
  3  where e.deptno = case when '&&par_deptno' = 'all' then to_char(e.deptno)
  4                        else '&&par_deptno'
  5                   end
  6  order by e.deptno, e.ename;
Enter value for par_deptno: 10

    DEPTNO ENAME      JOB
---------- ---------- ---------
        10 CLARK      MANAGER
        10 KING       PRESIDENT
        10 MILLER     CLERK

现在,让我们试试all

SQL> undefine par_deptno
SQL> /
Enter value for par_deptno: all

    DEPTNO ENAME      JOB
---------- ---------- ---------
        10 CLARK      MANAGER
        10 KING       PRESIDENT
        10 MILLER     CLERK
        20 ADAMS      CLERK
        20 FORD       ANALYST
        20 JONES      MANAGER
        20 SCOTT      ANALYST
        20 SMITH      CLERK
        30 ALLEN      SALESMAN
        30 BLAKE      MANAGER
        30 JAMES      CLERK
        30 MARTIN     SALESMAN
        30 TURNER     SALESMAN
        30 WARD       SALESMAN

14 rows selected.

SQL>

我觉得不错。现在,它在 EBS 中会是什么样子,我不知道。

【讨论】:

它以类似的方式工作,我使用返回部门的查询获得“全部”值联合,然后在报告查询中我键入 where 条件,如果参数值是全部,则返回全部值,如果不是,它将是一个特定的部门 ID,因此返回该部门 好,我很高兴听到这个消息。

以上是关于oracle EBS中的绑定参数的主要内容,如果未能解决你的问题,请参考以下文章

如何为 SqlDataSource 动态绑定变量参数

Oracle - 如何使用动态绑定参数定义动态 SQL?

Oracle - 如何使用动态绑定参数定义动态SQL?

编程开发之--Oracle数据库--存储过程使用动态参数绑定

Oracle“ORA-01008:并非所有变量都绑定”错误带参数

执行 Oracle Ad Hoc 查询时绑定参数出错; ORA-00907: 缺少右括号