【问题标题】:Multiple insert queries on an Oracle server "SQL command not properly ended"Oracle 服务器上的多个插入查询“SQL 命令未正确结束”
【发布时间】:2014-07-08 12:43:15
【问题描述】:

我试图一次性执行多个插入查询,为此我构建语句并一次性复制它们,然后执行下面的所有内容就是一个例子:

insert into capd_student (S_ID, S_StudentReference) 
   values ('186000377936135','s0253166')
insert into capd_student (S_ID, S_StudentReference) 
   values ('186000377936136','s0253166')
insert into capd_student (S_ID, S_StudentReference) 
   values ('186000377936137','s0253166')

我收到的错误是“SQL 命令未正确结束”,我也尝试在末尾使用分号,这给了我一个“无效字符”错误。

【问题讨论】:

  • 您使用哪个(客户端)工具来运行这些语句?
  • 我已经使用 Unit-e Query executor 进行了尝试,并且 Microsoft 报表生成器中的查询设计器都抛出了相同的错误。
  • 您是否尝试过使用“原生”Oracle 工具,如 SQL Developer 或 SQL*Plus?一般来说,SQL 语句需要以; 结束。 (虽然微软工具不尊重他们,我并不感到惊讶)

标签: sql oracle


【解决方案1】:

你肯定需要在每条语句的末尾使用分号。在 SQL 中,您用分号分隔语句,但最后一条语句不需要分号。因此,如果您愿意,可以在末尾省略分号。

这会导致下一个错误,即无效字符。仔细检查列名,记住 SQL 名称区分大小写,并尝试在 INSERT、INTO 和 VALUES 上使用大写字母。此外,您可以尝试在值参数中的逗号后添加一个空格。

前:

INSERT INTO capd_student (S_ID, S_StudentReference) VALUES ('186000377936135', 's0253166');

【讨论】:

  • 米勒,欢迎光临!在 Oracle 中,SQL 名称是 case-sensitive?不,它们不是,除非您在double quotes 之间指定它们(只有几个 db 对象)。关键字仍然是 NOT 区分大小写的。逗号后的空格是一种很好的做法,但这不是问题!
  • 啊,谢谢。以为我会尽力而为。似乎有点容易解决,但他可能没有使用 SSMS。干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
相关资源
最近更新 更多