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 语句和视图缺少表达式的主要内容,如果未能解决你的问题,请参考以下文章