我使用的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发言的有一个 BEGINEND; 语法,例如:

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

在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,它的工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top