Oracle :SQL 命令未正确结束

Posted

技术标签:

【中文标题】Oracle :SQL 命令未正确结束【英文标题】:Oracle :SQL command not properly ended 【发布时间】:2015-05-05 20:00:29 【问题描述】:
String req="INSERT INTO NOTIFICATIONS VALUES(6,1,sysdate,'toz',02542,'bporp')(SELECT valide from mouvement where valide=?)";

我想使用条件发出请求,但我收到错误:

SQL 命令未正确结束

【问题讨论】:

我正在使用 PreparedStatement ` String req="INSERT INTO NOTIFICATIONS VALUES(6,1,sysdate,'toz',02542,'bporp')(SELECT valide from mouvement where valide=?)"; PreparedStatement pst=connexion.getcon().prepareStatement(req); pst.setBoolean(1,valide);结果集 R=pst.executeQuery();` 您仍应根据PreparedStatement 执行一条 SQL 语句。对我来说,这看起来像两个 SQL 语句:一个“插入”和一个“选择”。你期望发生什么,真正发生了什么? (另外,再多几行,你就可以展示你是如何实际执行这个的......这可能会有所帮助。) @jradich1234 我有错误:SQL 命令没有正确结束 可能是表名拼写错误,请尝试提供更多有关错误的详细信息 【参考方案1】:

您的 SQL 查询无效。这是您当前的 SQL 语句:

INSERT INTO NOTIFICATIONS VALUES(6,1,sysdate,'toz',02542,'bporp')(SELECT valide from mouvement where valide=?)

如果我们把它分成几行以便更好地理解,你会得到这样的:

INSERT INTO NOTIFICATIONS
VALUES(6,1,sysdate,'toz',02542,'bporp')
(SELECT valide from mouvement where valide=?)

这不是一个有效的语句,即使对于任何 SQL 工具也是如此。那是因为您有 2 条语句没有分开它们:INSERT,然后是 SELECT,而您没有执行 INSERT INTO <TABLE1> SELECT ... FROM <TABLE2>

您应该为每个 StatementPreparedStatement 执行一条 SQL 语句。这在 Java 中应该这样完成:

String sql1 = "INSERT INTO NOTIFICATIONS"
    + " VALUES(6,1,sysdate,'toz',02542,'bporp')";
String sql2 = "SELECT valide from mouvement where valide=?";
Statement stmt = con.createStatement();
stmt.executeUpdate(sql1);
PreparedStatement pstmt = con.prepareStatement(sql2);
pstmt.setString(1, <parameter_value>);
ResultSet rs = pstmt.executeQuery();

【讨论】:

以上是关于Oracle :SQL 命令未正确结束的主要内容,如果未能解决你的问题,请参考以下文章

SQL 命令未正确结束 oracle 10g 功能

Oracle 8i SQL 命令未正确结束

oracle 问题 ORA-00933: SQL 命令未正确结束 如何解决?

oracle mybatis一次执行多条sql,提示SQL命令未正确结束

如何解决 ORA-00933:SQL 命令未在 oracle 中正确结束?

mybatis 批量插入时报错:ORACLE ORA-00933: SQL 命令未正确结束