【问题标题】:ORA-00933: SQL command not properly ended (in simple insert statement)ORA-00933: SQL 命令未正确结束(在简单的插入语句中)
【发布时间】:2011-03-12 00:20:06
【问题描述】:

下面的简单语句:

INSERT INTO mydb.inventory (itemID) VALUES (:itemID) WHERE playerID = :ID;

产生以下错误:

ORA-00933: SQL command not properly ended

我试过不带分号和带分号,但都给我错误。我确信变量也被绑定了。

我所有的 Google 搜索都表明这通常是由 ORDER BY 子句引起的,但显然我没有。 =P

【问题讨论】:

  • n/m。我刚刚意识到我正在尝试做的事情是愚蠢的。

标签: sql oracle plsql ora-00933


【解决方案1】:

只有在使用 SELECT 填充 INSERT statement 时才定义 WHERE 子句。即:

INSERT INTO mydb.inventory 
  (itemID)
SELECT :itemID FROM DUAL

否则,您按原样指定值:

INSERT INTO mydb.inventory 
  (itemID)
VALUES
  (:itemID)

当你是updating an existing record时你指定一个WHERE子句:

UPDATE mydb.inventory 
   SET itemid = :itemid
 WHERE playerid = :ID

【讨论】:

    【解决方案2】:

    插入不能有 where 子句。也许你真的想update

    【讨论】:

    • 如果使用 SELECT 填充值,则插入可以具有 WHERE 子句。详情见我的回答。
    • @OMG - 精神上然后(对我来说)where 在子选择上。但是,是的。
    【解决方案3】:

    where 子句在 insert 语句中相当不寻常。也许您正在尝试更新?

    UPDATE mydb.inventory SET itemID = :itemID WHERE playerID = :ID;
    

    【讨论】:

    • "unusual" 是对语法错误的某种低调的描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2012-05-29
    • 2016-02-04
    • 2019-10-11
    • 2010-09-09
    • 2010-11-22
    相关资源
    最近更新 更多