数据模型由于错误而无法执行,请联系管理员

时间:2019-06-06 02:45:16

标签: oracle plsql oracle-sqldeveloper bi-publisher

我有一个数据集,其中包含一列,其参数分别是名称,日期和数字。但是每次查看数据时,都会出现The data model cannot be executed because of an error, please contact the administrator.错误,但它仅显示消息,但不显示错误的详细信息。我还有一个值列表,因为我将namenumber的参数的参数类型设置为menu,这是结果 对于number返回的值是基于name的,因为如果我不将其作为名称的基础,它将返回100多个值,这对我的用户来说是不正确的。

例如,我对我的数据集的查询是

select a.name, a.date, a.type_name, b.number, c.address
from details1 a, details2 b, details3 c
where
a.id = b.id
and b.id = c.id
and a.name = :name
and a.date between :start_date and :end_date
and b.number = :number

查询name的值列表

select a.name from details1 a
where a.type_name = 'person'

查询num的值列表

select b.number
from details1 a, details2 b
where 1=1
and a.id = b.id
and a.name = :name

1 个答案:

答案 0 :(得分:0)

我不了解BI Publisher,但是-就Oracle而言,列名可以number。它是数据类型的保留字:

SQL> create table test (number number);
create table test (number number)
                   *
ERROR at line 1:
ORA-00904: : invalid identifier

您的查询使用这样的列:

select b.number ...

这是行不通的,除非有人通过将列名括在双引号中来创建这样的表,例如

SQL> create table test ("number" number);

Table created.

SQL> desc test
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------------
 number                                             NUMBER

SQL>

但是,您每次都必须使用双引号指定这样的列名,注意字母大小写(这意味着:如果该列被创建为“ NumBER”,则必须以这种方式进行引用。“ numBER”或“ NUMber”或“ nUmBeR”或“ number”或“ NUMBER”无效)。一些例子:

SQL> insert into test (number) values (1);
insert into test (number) values (1)
                  *
ERROR at line 1:
ORA-00928: missing SELECT keyword


SQL> insert into test ("NUMber") values (1);
insert into test ("NUMber") values (1)
                  *
ERROR at line 1:
ORA-00904: "NUMber": invalid identifier


SQL> insert into test ("NUMBER") values (1);
insert into test ("NUMBER") values (1)
                  *
ERROR at line 1:
ORA-00904: "NUMBER": invalid identifier


SQL> insert into test ("number") values (1);

1 row created.

SQL> select t."number" from test t;

    number
----------
         1

SQL>

因此,我建议您检查表说明并尝试使用所看到的内容。也许就这么简单

select b."number" ...

如果是这样,那么因为您可以做某事而做某事并不明显意味着您应该做某事。避免这种情况,切勿将Oracle对象名称用双引号引起来,而应使用默认值。