我找到了在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…
(请注意上一个代码代码段中的独特关键字)
当然,这在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的报告现在都在工作通常,at in 11 g中的 in Expect 在11G中,但是您无法写入该代码从头开始,在11G的开发时间未识别它,如果包含错误,您将无法保存查询,尽管它在迁移的报告中工作。
。,而且,出于相同的原因,我无法在那些迁移的报告中编辑和保存我的编辑。
因此,如何克服此开发时间限制并能够保存查询,无论其内部写了什么?
正如我之前说过的,它在11G中工作,但我无法编辑现有或使用这些特殊命令创建新的。
因此,任何建议都将不胜感激。
尝试Flexfields的概念,它是新介绍给BI 11G
链接到Oracle帮助
现在在最新的Oracle 11G补丁中修复了此问题
11g Release 1 (11.1.1)
是在先前的版本中。
已添加了一个下拉框,以允许开发人员选择查询类型Type of SQL
,最适合此类型查询的是Non-Standard SQL
刚刚测试,它正常工作