【问题标题】:Oracle :SQL command not properly endedOracle :SQL 命令未正确结束
【发布时间】: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 命令没有正确结束
  • 可能是表名拼写错误,请尝试提供更多有关错误的详细信息

标签: java oracle jdbc


【解决方案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();

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 1970-01-01
    • 2014-04-15
    • 2022-01-18
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多