首页 > 解决方案 > 在 as 语句之后 SQL 命令未正确结束

问题描述

我想创建一个名为 PROJECT_FEMALE 的视图。来自 3 个不同的表,但 sql 给了我这个错误。

CREATE VIEW PROJECT_FEMALE 
AS
    SELECT e.Ssn, e.Fname, e.Lname, p.Pnumber, p.Pname, w.Hours
    FROM Employee AS e, Works_on AS w, Project AS p
    WHERE e.Ssn = w.Essn AND w.pno = p.Pnumber AND e.sex = 'F';

错误:

[代码:933,SQL 状态:42000] ORA-00933:SQL 命令未正确结束
[脚本位置:103 - 105]

它指向后面的声明,Employee但我不明白问题是什么,我该如何解决?

标签: sqldatabaseoracleoracle-sqldeveloper

解决方案


Oracle 不支持表别名AS,只能AS用于列别名;所以,你的代码应该是:

CREATE VIEW PROJECT_FEMALE
AS
   SELECT e.Ssn,
          e.Fname,
          e.Lname,
          p.Pnumber,
          p.Pname,
          w.Hours
     FROM Employeee, Works_on w, Project p
    WHERE e.Ssn = w.Essn AND w.pno = p.Pnumber AND e.sex = 'F';

或更好)

CREATE VIEW PROJECT_FEMALE
AS
   SELECT e.Ssn,
          e.Fname,
          e.Lname,
          p.Pnumber,
          p.Pname,
          w.Hours
     FROM Employee e
          INNER JOIN Works_on w ON (e.Ssn = w.Essn)
          INNER JOIN Project p ON (w.pno = p.Pnumber)
    WHERE e.sex = 'F';   

推荐阅读