ORA-00936: Oracle 11g 中的 DELETE 语句和视图缺少表达式

Posted

技术标签:

【中文标题】ORA-00936: Oracle 11g 中的 DELETE 语句和视图缺少表达式【英文标题】:ORA-00936: missing expression for DELETE statement & VIEW in Oracle 11g 【发布时间】:2020-04-22 00:52:56 【问题描述】:

当我尝试在 Oracle 11g 中创建 DELETE 语句和 VIEW 时,收到消息“ORA-00936:缺少表达式”。

删除声明: 这是创建的原始表:

    CREATE TABLE SHIPMENT
    (
    ShipmentID INT PRIMARY KEY,
    ShipperID INT NOT NULL REFERENCES SHIPPER(ShipperID),
    ShipperInvoiceNumber INT NOT NULL UNIQUE,
    Origin VARCHAR2(30) NOT NULL,
    Destination VARCHAR2(30) NOT NULL,
    DepartureDate DATE,
    ArrivalDate DATE
    );  

这是我要使用的 DELETE 语句:

    DELETE SHIPMENT WHERE ShipmentID = <ShipmentID TO DELETE>;

查看: 这是我要创建的视图:

    CREATE VIEW PurchaseSummaryView AS
    SELECT PurchaseID, [Date], Description, AND PriceUSD
    FROM PURCHASE_ITEM;​

这是为它创建的表:

    CREATE TABLE PURCHASE_ITEM
    (
    PurchaseItemID INT PRIMARY KEY,
    StoreID INT NOT NULL REFERENCES STORE(StoreID),
    "Date" DATE NOT NULL,
    Description VARCHAR2(30) NOT NULL,
    Category VARCHAR2(30),
    PriceUsed NUMBER(15, 2)
    );

我并不像我想的那样熟悉 Oracle 11g。我犯了什么简单的错误?

【问题讨论】:

[DATE] 不是 Oracle 语法。 给出错误所指的行可能会有所帮助。并在视图创建语句中:“ CREATE VIEW PurchaseSummaryView AS SELECT PurchaseID, [Date], Description, AND PriceUSD FROM PURCHASE_ITEM;​” “AND”看起来很奇怪,可能你可以删除它 【参考方案1】:

请创建如下视图

 CREATE OR REPLACE  VIEW PurchaseSummaryView AS
 SELECT PurchaseID, "Date", Description, PriceUSD
 FROM PURCHASE_ITEM;​

而且delete 声明应该没问题

【讨论】:

以上是关于ORA-00936: Oracle 11g 中的 DELETE 语句和视图缺少表达式的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00936: 缺少表达式 oracle

Oracle CASE WHEN - ORA-00936:缺少表达式

Oracle 11g 子查询中缺少表达式

ORA-00936: 缺少表达式解决方案 - 转换函数

带有 ORA-00936 的 SQL 查询实例:缺少表达式错误

Oracle 数据库中执行SQL语句 出现 [Err] ORA-00936: 缺失表达式! 但在SQL server 中可以使用 大家帮帮忙