sql - ORA-00933: SQL 命令未正确结束

标签 sql oracle ora-00933

我正在使用 OLEDB 提供程序将 ADO.Net 连接到 Oracle 数据库。在我的循环中,我正在执行插入:

insert into ps_tl_compleave_tbl values('2626899', 0, TO_DATE('01/01/2002', 'MM/DD/YYYY'), 'LTKN', 'LTKN', '52', TO_DATE('01/01/2002', 'MM/DD/YYYY'), 16.000000, 24.000)insert into ps_tl_compleave_tbl values('4327142', 0, TO_DATE('03/23/2002', 'MM/DD/YYYY'), 'LTKN', 'LTKN', '51', TO_DATE('03/23/2002', 'MM/DD/YYYY'), 0.000000, 0.000)

第一次插入成功,但第二次插入出错:

ORA-00933: SQL command not properly ended

我做错了什么?

最佳答案

在.net中,当我们尝试执行单个以分号结尾的Oracle SQL语句时。结果将是 oracle 错误:ora-00911:无效字符。好的,您认为一条 SQL 语句不需要分号,但是例如在一个字符串中执行 2 条 SQL 语句又如何呢:

Dim db As Database = DatabaseFactory.CreateDatabase("db")
Dim cmd As System.Data.Common.DbCommand
Dim sql As String = ""

sql = "DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; "

cmd = db.GetSqlStringCommand(sql)
db.ExecuteNonQuery(cmd)

上面的代码将给您相同的 Oracle 错误:ora-00911:无效字符。

此问题的解决方案是使用 BEGINEND; 语法包装 2 个 Oracle SQL 语句,例如:

sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"

礼貌:http://www.lazyasscoder.com/Article.aspx?id=89&title=ora-00911%3A+invalid+character+when+executing+multiple+Oracle+SQL+statements

关于sql - ORA-00933: SQL 命令未正确结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72151/

相关文章:

mysql - 获取每个类别的最后五条记录

MySQL - 选择行程次数最多但不重复的项目

java - 如何使用MyBatis调用Oracle数据库序列号?

java - ORA-00933: SQL 命令未正确结束: java

sql - 更新查询在 SQL Server 中运行,但不在 Oracle 中运行

php - 在我的 Mysql 语句中包含 GROUP BY id

sql - 程序结构——简单的命令行待办事项列表应用程序——Haskell 的方式是什么?

oracle - 对特定列使用 DISTINCT

oracle - 为什么调度器链步骤名的最大长度是 24 个字节?