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

时间:2020-03-05 18:55:54  来源:igfitidea点击:

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

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

我究竟做错了什么?

解决方案

回答

第一次插入后的半结肠?

回答

Oracle SQL使用分号;作为其语句结尾标记。

我们将需要添加;在插入语句之后。

注意:这还假设ADODB在一次调用中将允许2次插入。

另一种选择是将两个调用都包装在一个块中,

BEGIN
      insert (...) into (...);
      insert (...) into (...);
END;

回答

对我来说,我们似乎在两个语句之间缺少了";":
插入ps_tl_compleave_tbl值('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)
;
插入ps_tl_compleave_tbl值('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)
;
尝试添加;并告知我们。

回答

这是一个远景,但是在第一个插入中,sql日期格式对英国和美国均有效,如果Oracle DB设置为英国日期格式,则第二个插入无效,我意识到我们已经使用了TO_DATE函数,但我没有看到其他...

回答

OLE_DB是否需要分号?大多数API都不需要它吗?

回答

ADO.NET OLE DB提供程序用于常规数据访问,而我们没有数据库的特定提供程序。对于Oracle数据库连接,优先于OleDbConnection使用OracleConnection等。

回答

在我的循环中,我没有重新初始化StringBuilder ...因此我发布了多个insert语句。

还是要谢谢你的帮助!!

回答

除了分号问题,我强烈建议我们研究绑定变量。未能使用它们可能会导致数据库性能问题。该代码也倾向于更简洁。