Oracle中的INSERT..SELECT始终失败,并且“SQL命令未正确结束”

时间:2014-03-10 17:13:22

标签: oracle sqlfiddle

我精通SQL-Server和其他形式的SQL,但我正在尝试学习Oracle SQL。出于某种原因,我无法使最简单的INSERT INTO .. SELECT ..形式工作,它始终失败,“ SQL命令未正确结束。

这是我目前的例子:

CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99));

INSERT INTO table1
(year, id, dat, categ)
select year, id, dat, categ from table1 where id=5000 and year=2013;

这是一个SqlFiddle:http://sqlfiddle.com/#!4/c4d34/1

我似乎无法弄清楚这里有什么问题。我已经在SO上检查了十几个其他相关问题,在Google上查了十多个相关问题,但所有答案要么不适用,要么不起作用。我也尝试了上面几百万种命令,似乎没什么用。

任何帮助非常赞赏。


FWIW,我现在认为这只是一个SQLFiddle问题,正如许多人所争辩的那样。

使用我的代码向我报告问题的Oracle用户当然使用完整的SQL语句,然后我将其剥离以试图隔离问题。 那个查询有一个完全不同的问题,恰好在SQLFiddle中报告了同样的错误。具体来说,问题是我使用As表示别名,这显然在Oracle中是无效的(或者可能只是在我编写的查询中)。

无论如何,衷心感谢所有试图帮助我的人。

3 个答案:

答案 0 :(得分:4)

CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99))
/

INSERT INTO table1
(year, id, dat, categ)
select year, id, dat, categ from table1 where id=5000 and year=2013

这是有效的,也就是说,如果您在SQL小提琴的左侧(架构)窗口中粘贴这两个语句。我不认为SQL Fiddle在SQL窗口中允许insert..select

答案 1 :(得分:2)

SQL Fiddle

CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99))
//

INSERT INTO table1 (year, id, dat, categ)
SELECT year, id, dat, categ 
FROM table1 
WHERE id = 5000 AND year=2013
//

答案 2 :(得分:2)

我不知道你为什么会遇到这个问题,但语法

没有问题

我认为这只是你如何在小提琴上执行查询我只是改变了执行流程并在模式构建部分中移动了Insert语句然后整个工作正常工作而没有改变一个单词(但我插入了一些示例数据来显示确切的工作)

请参阅此http://sqlfiddle.com/#!4/38e62/1