Oracle BI Publisher - 10G和11G之间的不同行为

时间:2014-01-30 08:01:40

标签: sql oracle oracle11g oracle10g bi-publisher

我找到了在Oracle BI Publisher 10G的数据集中编写条件SQL语句的语法。例如,我希望数据可以是完整的细节,也可以根据我定义的参数进行区分。

说明我想要的东西:

将有一个参数,例如P_UNIQUE,这是一个用户可以选择的选项列表,列表包含这些值

  

数据是唯一的,值= 1

     

数据不唯一,值= 2

然后根据用户选择,运行时数据集中执行的SQL命令将是:

SELECT 

        DISTINCT 

        FIRSTNAME || ' ' || LASTNAME AS EMP_NAME, 
        DECODE(TRANSACTIONTYPE, 19, 'SUCCESS', 'FAILURE') AS ACCESS_ATTEMPT, 
        READERDESCRIPTION AS DOOR,

        etc…

   SELECT 

        FIRSTNAME || ' ' || LASTNAME AS EMP_NAME, 
        DECODE(TRANSACTIONTYPE, 19, 'SUCCESS', 'FAILURE') AS ACCESS_ATTEMPT, 
        READERDESCRIPTION AS DOOR,

        etc…

(请注意上一代码段中的 Distinct 关键字)

当然,这在SQL中是不可能的,但我在BI 10G中遇到了这个惊人的功能来实现它,请参阅下面的代码:

SELECT 

    {$ if ${P_UNIQUE}='1' $}
    DISTINCT 
    {$endif$}
    /*no need for else, the distinct keyword will simply not be presented if the p_unique parameter value is not equal to 1*/

    FIRSTNAME || ' ' || LASTNAME AS EMP_NAME, 
    DECODE(TRANSACTIONTYPE, 19, 'SUCCESS', 'FAILURE') AS ACCESS_ATTEMPT, 
    READERDESCRIPTION AS DOOR,

        etc…

这在10G中完美运行

现在我遇到的问题是,我们迁移到11G,所有来自10G的报告现在正在正常和11G中的预期,但你不能写此代码从头开始,在11G的开发时无法识别,如果查询包含错误,您将无法保存查询,尽管它在迁移的报告中有效。

另外,出于同样的原因,我无法在这些迁移的报告中编辑和保存我的编辑内容。

那么,如何克服这个开发时间限制并能够保存查询而不管其中写入了什么?

正如我之前所说,它正在11G中工作,但我无法使用这些特殊命令编辑现有或创建新的。

因此,任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

尝试弹性域的概念,它是新引入的BI 11g

Link to oracle help

答案 1 :(得分:1)

此问题现已在最新的Oracle 11g补丁中修复

11g Release 1 (11.1.1)

这是在之前的版本中。

添加了一个下拉框,允许开发人员选择查询类型Type of SQL,此类型查询的最佳选择是Non-Standard SQL

刚试过它,它工作正常