我有一个数据集,其中包含一列,其参数分别是名称,日期和数字。但是每次查看数据时,都会出现The data model cannot be executed because of an error, please contact the administrator.
错误,但它仅显示消息,但不显示错误的详细信息。我还有一个值列表,因为我将name
和number
的参数的参数类型设置为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
答案 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对象名称用双引号引起来,而应使用默认值。