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