当前位置: 首页 > 知识库问答 >
问题:

Java语言sql。SQLSyntaxerRorexException:ORA-00907:缺少右括号错误

卜勇
2023-03-14

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

我试了一些代码。但是我对Oracle中的last\u value()函数有一个问题。

我得到了错误:

严重:空java。sql。SQLSyntaxerRorexException:ORA-00907:oracle缺少右括号。jdbc。驾驶员t4cttiore。oracle的processError(t4cttiore.java:450)
。jdbc。驾驶员t4cttiore。oracle的processError(t4cttiore.java:399)
。jdbc。驾驶员T4C8O所有。oracle上的processError(T4C8Oall.java:1017)
。jdbc。驾驶员T4CTTIfun。在oracle接收(T4CTTIfun.java:655)
。jdbc。驾驶员T4CTTIfun。oracle的doRPC(T4CTTIfun.java:249)
。jdbc。驾驶员T4C8O所有。doOALL(T4C8Oall.java:566)
在oracle。jdbc。驾驶员T4C准备声明。doOall8(T4CPreparedStatement.java:215)
在oracle。jdbc。驾驶员T4C准备声明。doOall8(T4CPreparedStatement.java:58)
在oracle。jdbc。驾驶员T4C准备声明。oracle上的executeForDescribe(T4CPreparedStatement.java:776)
。jdbc。驾驶员OracleStatement。oracle的executeMaybeDescribe(OracleStatement.java:897)
。jdbc。驾驶员OracleStatement。doExecuteWithTimeout(OracleStatement.java:1034)
在oracle。jdbc。驾驶员OraclePreparedStatement。oracle的executeInternal(OraclePreparedStatement.java:3820)
。jdbc。驾驶员OraclePreparedStatement。oracle的executeQuery(OraclePreparedStatement.java:3867)
。jdbc。驾驶员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个答案

徐洋
2023-03-14

您的订购条款有问题<代码>结束(按接收日期或转换日期排序)

它可能就像over(order by接收日期,Transdate)

看看oracle文档中的Order by子句语法--

按{column Name | ColumnPosition | Expression}[ASC | DESC][NULLS FIRST | NULLS LAST][,column Name | ColumnPosition | Expression[ASC | DESC][NULLS FIRST | NULLS LAST]]排序*

 类似资料: