我正在使用 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:无效字符。
此问题的解决方案是使用 BEGIN
和 END;
语法包装 2 个 Oracle SQL 语句,例如:
sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"
关于sql - ORA-00933: SQL 命令未正确结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72151/