【发布时间】:2014-04-13 22:42:56
【问题描述】:
我精通 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 中显然是无效的(或者可能只是在我编写的查询中)。
无论如何,衷心感谢所有试图帮助我的人。
【问题讨论】:
-
@Linger 生成“缺少表达式”错误。
-
您使用哪个工具来运行该脚本? Oracle-XE (Express) 的 Web 界面不允许您将多个语句作为脚本运行。如果您正在使用 XE Web 界面(在浏览器中),您最好立即转储该界面并使用适当的 GUI 客户端(例如 SQL Developer 或任何其他客户端,甚至 SQL*Plus 会更好)
-
不幸的是,我自己没有Oracle,我现在必须使用SQLFiddle,所以我不知道如何回答这个问题。对于我尝试过的所有其他情况,SQLFiddle 工具似乎确实允许 DDL 和多个 DML。 (我欢迎任何便宜的方式在我的桌面上安装 Oracle,比如 SQL Server 的开发人员版)。
-
对我来说很好用。在 SQL Developer(来自 Oracle 的免费 IDE)中,将其放入 SQL 工作表并按 F5(运行脚本)。
-
这不是一般的 Oracle 问题(您的脚本在我的 SQL 客户端中运行良好)。如果您使用左侧面板中的插入,它确实在 SQLFiddle 中工作:sqlfiddle.com/#!4/c5678/1