ORA-00933:SQL command不正常结束
题
我使用的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
我做错了什么?
解决方案
给我看来你错过一个 ;
两者之间的发言:
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)
;
尝试加入的 ;
让我们知道。
其他提示
中。净,当我们试图执行一个Oracle SQL statement一号结束。结果将是一个oracle的错误:ora-00911:无效性。好吧,你找那一个SQL声明并不需要的分号,但对于执行2SQL statement在一串例如:
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 error:ora-00911:无效性。
这个问题的解决方案是包裹你2Oracle SQL发言的有一个 BEGIN
和 END;
语法,例如:
sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"
在Oracle半号';'是仅仅用在sqlplus.当你使用ODBC/JDBC、OLEDB,等等你不把一半的结肠的末尾你发言。在上述情况下,您是实际执行2种不同的语句,以便最好的方式来处理的问题是使用2个语句,而不是试图结合成一个单一的声明因为你不能使用的分号。
半结肠后的第一次刀?
Oracle SQL采用半结肠;作为其结尾的语句中的标记。
你将需要增加;之后插入麻烦statments.
NB:还假定ADODB将允许2插入一个单一的呼吁。
替代的可能是两个包裹的电话在一块,
BEGIN
insert (...) into (...);
insert (...) into (...);
END;
在我的循环我是不是重新初始化我StringBuilder...这样的多个插入我的发言发布。
谢谢你的帮助呢!!
这是一个长枪,但在第一插入sql日期格式是有效用于这两个英国/美国,在第二插入是无效的,如果Oracle数据库是设于英国的日期格式,我意识到你已经使用的TO_DATE功能,但我没看到任何东西...
是的号需要从OLE_DB?它不需要从最API的?
的ADO.NET OLE DB是对通用的数据访问,你没有一个特定的供应商数据库。使用、et al优先于OleDbConnection为一个Oracle数据库连接。
除了分号的问题,我强烈建议你看看结合变量。未能使用他们可能会导致性能数据库问题的道路。该法还倾向于更清洁。
该问题可能你有一个参数的变量空插入的查询。那是什么我的问题了。一旦我给的参数的缺省值的empty string,它的工作。