#java #sql #oracle
#java #sql #Oracle
Вопрос:
У меня есть метод, который содержит подобный запрос
public List<Order> getOrders (int customer_id, int count)
{
String sql= "select * from order where customer_id = ? order by order_id DESC FETCH FIRST ? ROWS
ONLY"
}
Что я хочу сделать, так это перечислить заказы в соответствии с заданными входными данными (количество).Я получаю такую ошибку
Missing IN or OUT parameter at index:: 2
Если я удалю вторую? и я пишу DESC FETCH FIRST 5 ROWS
, что он выполняется успешно.Я думаю, что я не мог использовать параметр salary в операторе выборки DESC.У вас есть какие-либо идеи?
Комментарии:
1. Можете ли вы опубликовать другие части кода, поскольку опубликованная вами функция — это только запрос, и вы, вероятно, что-то упускаете при замене значений?
Ответ №1:
Действительно, в order_by_clause и row_limiting_clause DESC
нет ограничений для порядка
вы должны каким-то образом не устанавливать второй параметр …
Вот рабочий пример JDBC с отмеченной строкой, которая при закомментировании приводит к вашему исключению
def stmt = con.prepareStatement("""select order_id from getOrders
where customer_id = ?
order by order_id DESC
FETCH FIRST ? ROWS ONLY""")
stmt.setInt(1,1001) /* Bind customer_id = 1001 */
stmt.setInt(2,3) /* bind count of rows = 3; uncomment to get java.sql.SQLException: Missing IN or OUT parameter at index:: 2 */
def rs = stmt.executeQuery()
while(rs.next())
{
println "order_id= ${rs.getInt(1)}"
}
Комментарии:
1. Я использую spring Jdbc, а не обычный jdbc, но я постараюсь изменить ваш код на spring jdbc. Большое вам спасибо.
2. Используете ли вы JdbcTemplate или Spring Data JDBC? Если у вас все еще есть проблемы, опубликуйте свое полное заявление.