Oracle缺少关键字

时间:2013-05-09 09:28:13

标签: oracle

像这样的SQL:

CREATE VIEW UOS_VU_COURSE_MODULES
SELECT MODULE.MODULE_TITLE, STAFF.FIRST_NAME, STAFF.LAST_NAME, MODULE.SEMESTER, MODULE.CREDIT
FROM STAFF, MODULE
WHERE MODULE.COODINATOR_ID =STAFF.STAFF_ID AND COURSE.COURSE_ID=INFU101 AND
COURSE.COURSE_ID=MGTU17
ORDER BY MODULE.MODULE_TITLE

出现ORA-00905:缺少关键字。

3 个答案:

答案 0 :(得分:2)

缺少AS关键字:

CREATE VIEW UOS_VU_COURSE_MODULES
AS
SELECT 
    MODULE.MODULE_TITLE, STAFF.FIRST_NAME, STAFF.LAST_NAME, 
    MODULE.SEMESTER, MODULE.CREDIT
FROM 
    STAFF, MODULE
WHERE 
    MODULE.COODINATOR_ID = STAFF.STAFF_ID AND COURSE.COURSE_ID = INFU101 AND
    COURSE.COURSE_ID = MGTU17
ORDER BY MODULE.MODULE_TITLE

参考:CREATE VIEW

答案 1 :(得分:1)

您的代码存在一些问题。

  1. 当然,AS是必需的。

  2. 大写代码风格真的难以阅读,这就是为什么高速公路路标不再使用它了。

  3. 连接样式已过时,您应该使用ANSI SQL方法。

  4. 你在course.course_id上​​有两个谓词看起来应该是文字,但不幸的是如果它们相互矛盾的话。

  5. 无论如何,你应该有一些看起来更可支持的东西:

    create view
      uos_vu_course_modules
    as
    select
      module.module_title,
      staff.first_name   ,
      staff.last_name    ,
      module.semester    ,
      module.credit
    from
      staff join
      module on (module.coodinator_id = staff.staff_id)
    where
      course.course_id = 'INFU101' and
      course.course_id = 'MGTU17'
    order by
      module.module_title;
    

    也许WHERE子句应该是

      course.course_id = 'INFU101' or
      course.course_id = 'MGTU17'
    

答案 2 :(得分:0)

在视图名称后添加AS

create view UOS_VU_COURSE_MODULES AS