java.sql.SQLSyntaxErrorException:ORA-00907:缺少右括号错误

时间:2015-06-17 06:59:44

标签: java oracle

当godownname和itemname匹配时,我想从表中获取最后一个可用余额。

我尝试了一些代码。但我在Oracle中遇到last_value()函数问题。

我收到了错误:

  

严重:空       java.sql.SQLSyntaxErrorException:ORA-00907:缺少右括号
      在oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
          在oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
          在oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1017)
          在oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655)
          在oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249)
          在oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:566)
          at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215)
          at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:58)
          at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:776)
          在oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:897)
          在oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1034)
          at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3820)
          at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3867)
          at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1502)

我不知道错误在哪里? 任何人都可以帮助我吗?

这是我的代码:

String updateQuery = "select last_value(availablebalance) ignore nulls over(order by receiveddate or transdate) from t_stocks_status where godownname = ? and itemname = ?";
ps = con.prepareStatement(updateQuery);
ps.setString(1, fromField);
ps.setString(2, itemName);
rs = ps.executeQuery();
if (rs.next()) {
availableQty = rs.getInt(1);
}

1 个答案:

答案 0 :(得分:0)

您的order by子句有问题。over(order by receiveddate or transdate)

可能像over(order by receiveddate,transdate)

查看oracle docs -

中的Order by子句语法
  

ORDER BY {column-Name | ColumnPosition |表达式}       [ASC | DESC]       [NULLS FIRST | NULLS LAST]       [,column-Name | ColumnPosition |表达       [ASC | DESC]       [NULLS FIRST | NULLS LAST]       ] *