创建视图SQL时,总是出现错误 CREATE VIEW CARAVAN AS 选择年租金、预订费 从商队 其中年租金

创建视图SQL时,总是出现错误 CREATE VIEW CARAVAN AS 选择年租金、预订费 从商队 其中年租金,sql,oracle,Sql,Oracle,这是我失败的sql。错误是 ORA-00928:缺少SELECT关键字 尝试只运行SELECT语句: CREATE VIEW CARAVAN AS SELECT ANNUAL_RENT, BOOKING_FEE FROM CARAVAN WHERE ANNUAL_RENT < 3000 如果您对dba\u对象没有权限,请改为引用所有对象 引用的CARAVAN对象是架构中的对象、公共同义词或无效引用 正如Alex Poole所提到的,可以使用createforcev

这是我失败的sql。错误是

ORA-00928:缺少SELECT关键字


尝试只运行
SELECT
语句:

CREATE VIEW CARAVAN AS
    SELECT ANNUAL_RENT, BOOKING_FEE
    FROM CARAVAN
    WHERE ANNUAL_RENT < 3000
如果您对
dba\u对象
没有权限,请改为引用
所有对象

引用的
CARAVAN
对象是架构中的对象、公共同义词或无效引用

正如Alex Poole所提到的,可以使用
createforceview
语句创建语法无效的视图。(我怀疑引用的对象是包含无效语法的视图。)



Oracle中的标识符在架构中必须是唯一的。非常奇怪的是,您将创建一个名为
CARAVAN
的视图,该视图引用一个已命名为
CARAVAN
的对象。不清楚您试图用这个特殊的
CREATE VIEW
语句解决什么问题。

您的
CREATE VIEW
显然有一个
select
。因此,我得出结论,这不是您正在运行的代码(可能您只是在运行第一行代码)。您还可以使用该代码获得一个ORA-00955或ORA-01731,这取决于您是否已经拥有一个名为
CARAVAN
的表,正如
FROM
子句所期望的那样。您是否在
选择之前或之后有一个奇怪的不可见字符?尝试复制和粘贴此处显示的内容并运行它;或者重新键入。您的
视图
如何具有相同的名称?您应该得到一个不同的错误,正如@AlexPoole指出的那样,您应该给视图一个不同的表名(如果您确实需要一个视图);然后重新键入整个语句,以消除任何不可见的内容,使其认为缺少select关键字。如果在干净地重新键入后仍然出现错误,那么运行此操作的客户端或工具是什么?除了由于对象命名冲突而为视图指定不同的名称之外,一旦出现错误,如果创建了对象,但出现编译错误,则会继续出现错误,直到创建或替换视图,而不是仅创建。它仍然不允许我创建视图,我可以查看表,所以我知道他们不是问题table@AHMER93:您是否尝试过从sqlplus命令行运行该语句?如果
CARAVAN
是当前架构中的一个表,则不要在同一架构中运行名为
CARAVAN
的创建视图,请为视图指定其他名称。(我不明白为什么您首先需要创建一个视图,这解决了什么问题?)?
SELECT ANNUAL_RENT, BOOKING_FEE
FROM CARAVAN
WHERE ANNUAL_RENT < 3000
SELECT *
  FROM dba_objects
 WHERE object_name = 'CARAVAN'