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>
。
您应该为每个 Statement
或 PreparedStatement
执行一条 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 命令未正确结束的主要内容,如果未能解决你的问题,请参考以下文章
oracle 问题 ORA-00933: SQL 命令未正确结束 如何解决?
oracle mybatis一次执行多条sql,提示SQL命令未正确结束