我正在尝试创建一个派生属性(从第一季派生的季节数)。我想我需要创建一个视图,但我不确定。
下面是我的代码:
Create Table Officials(
Fname varchar2(15) not null,
Lname varchar2(15) not null,
Sport_ID number(10,2),
First_Season number(10,2),
primary key (Lname),
foreign key (Sport_ID) references Sports(Sport_ID)
);
Create View Number_of_Seasons as
Select Fs.*, extract(year from (current_date-First_Season)) as Number_of_Seasons
From Officials;
我一直得到错误:
无效字符
2条答案
按热度按时间mklgxw1f1#
选择Fs.,extract(year from(current_date-First_Season))可能无法在创建的表中找到Fs.。请精确说明您所指的列。
如果你指的是First_Season,那么就把它作为你进入表格的方式。
u1ehiz5o2#
你说你用的是Oracle Apex,我想你是在它的SQL命令中运行了这段代码;如果是的话,请注意-即使你可以在那里 * 输入 * 你想要的命令,你必须选择你想执行的语句,然后按下“运行”按钮(或键盘上的〈CTRL + Enter〉)。
我创造了
sports
表(因为它被officials
引用)officials
表number_of_seasons
视图fs.*
,因为在你发布的查询中没有类似的内容。它看起来像 * 一个表别名。因为你选择的唯一表是officials
,我使用了该表的别名。一切正常(就创建而言):另一方面,还有一些其他的“问题”。
first_season
列应该包含什么?它是一个小数点后两位的数字。此外,它然后在create view
语句中使用。你从current_date
中减去天的数量,得到例如。这对我来说不太对
sport_id
也是一样。一个 decimal ID?可能,但我不认为我见过有人使用它。因此,就代码本身而言,它背后的逻辑不是(至少对我来说)。