ORA-00926: 缺少 VALUES 关键字

Posted

技术标签:

【中文标题】ORA-00926: 缺少 VALUES 关键字【英文标题】:ORA-00926: missing VALUES keyword 【发布时间】:2012-08-29 20:43:36 【问题描述】:

我已将 VALUES 子句移到语句中的不同位置,但没有运气。我是新手,不胜感激。谢谢。

INSERT INTO KEYITEM.296 (KEYVALUECHAR, KEYSETNUM)
VALUES ('NOT PUBLIC', 0)
SELECT
    KEYITEM296.KEYVALUECHAR,
    KEYITEM296.KEYSETNUM
FROM
    ITEMDATA
LEFT OUTER JOIN
    KEYITEM296
ON
    (
       ITEMDATA.ITEMNUM = KEYITEM296.ITEMNUM)
WHERE
    ITEMDATA.ITEMTYPENUM = 862 ;

【问题讨论】:

【参考方案1】:

我是 DB2 粉丝,但您不能在 INSERT 中混合使用 VALUES 和 SELECT。

正确的 SQL 用于插入数据:

INSERT INTO KEYITEM.296 (KEYVALUECHAR, KEYSETNUM)
SELECT
    KEYITEM296.KEYVALUECHAR,
    KEYITEM296.KEYSETNUM
FROM
    ITEMDATA
LEFT OUTER JOIN
    KEYITEM296
ON
    (
       ITEMDATA.ITEMNUM = KEYITEM296.ITEMNUM)
WHERE
    ITEMDATA.ITEMTYPENUM = 862 

INSERT INTO KEYITEM.296 (KEYVALUECHAR, KEYSETNUM)
VALUES ('NOT PUBLIC', 0)

或者如果你想做 INSERT 然后 SELECT:

INSERT INTO KEYITEM.296 (KEYVALUECHAR, KEYSETNUM)
VALUES ('NOT PUBLIC', 0);
SELECT
    KEYITEM296.KEYVALUECHAR,
    KEYITEM296.KEYSETNUM
FROM
    ITEMDATA
LEFT OUTER JOIN
    KEYITEM296
ON
    (
       ITEMDATA.ITEMNUM = KEYITEM296.ITEMNUM)
WHERE
    ITEMDATA.ITEMTYPENUM = 862 ;

【讨论】:

Kovica Tim 在插入时执行两个查询 在左连接中,第一个查询插入数据,第二个执行左连接,但是当他执行左连接时,他没有设置ITEMNUM值 其中一个问题是KEYITEM.296和KEYITEM296。哪个是正确的? KEYITEM296 我认为因为名称 = 296 的表不正常,'。'它用于将模式与表分开 INSERT INTO KEYITEM296 (KEYVALUECHAR, KEYSETNUM) VALUES ('NOT PUBLIC', 0);那么在select中你想看到这条插入的记录吗?如果 ITENNUM 为 NULL,该怎么办。 ITEMNUM 是生成的列吗?【参考方案2】:
INSERT INTO KEYITEM296 (KEYVALUECHAR, KEYSETNUM, ITEMNUM)
VALUES ('NOT PUBLIC', 0, 862 );

  --You must complete your insert with ITEMNUM
  -- you must add ; separator
  -- you must delete '.' of your query

SELECT
    KEYITEM296.KEYVALUECHAR,
    KEYITEM296.KEYSETNUM
FROM
    ITEMDATA
LEFT OUTER JOIN
    KEYITEM296
ON
    (
       ITEMDATA.ITEMNUM = KEYITEM296.ITEMNUM)
WHERE
    ITEMDATA.ITEMTYPENUM = 862 ;

【讨论】:

以上是关于ORA-00926: 缺少 VALUES 关键字的主要内容,如果未能解决你的问题,请参考以下文章

Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字

merge into报错ORA-00926ORA-38014

使用 oracle 合并缺少的关键字

INSERT 语句中缺少 SELECT 关键字错误

Pandas:TypeError:sort_values() 缺少 1 个必需的位置参数:'by'

为啥这个merge语句会报缺失ON关键字