Tôi đang truy vấn DB bằng MS SQL và vì lý do nào đó tôi nhận được lỗi sau: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'
mặc dù 'P0' này không có ở đâu trong cú pháp của tôi ...Ngoại lệ MS SQL: Cú pháp không chính xác gần '@ P0'
Tôi đã đọc rằng ai đó đã gặp vấn đề tương tự nhưng họ đang sử dụng một proc được lưu trữ, thứ mà tôi không sử dụng nên tôi không thấy giải pháp của anh ấy sẽ hoạt động như thế nào đối với tôi. (Giải pháp của ông là asomething về việc thêm dấu ngoặc {} xung quanh cuộc gọi thủ tục.
Anyways, dưới đây tôi đã dán mã có liên quan. Thực sự hy vọng ai đó có thể giúp tôi với điều này, nhận được khá thất vọng.
PreparedStatement stmt = null;
Connection conn = null;
String sqlQuery = "SELECT TOP ? \n"+
"z.bankAccountNo, \n"+
"z.statementNo, \n"+
"z.transactionDate, \n"+
"z.description, \n"+
"z.amount, \n"+
"z.guid \n"+
"FROM \n"+
"(\n"+
"select \n"+
"ROW_NUMBER() OVER (ORDER BY x.transactionDate, x.statementNo) AS RowNumber, \n"+
"x.transactionDate, \n"+
"x.statementNo, \n"+
"x.description, \n"+
"x.amount, \n"+
"x.bankAccountNo, \n"+
"x.guid \n"+
"FROM \n"+
"(\n"+
"SELECT \n"+
"a.bankAccountNo, \n"+
"a.statementNo, \n"+
"a.transactionDate, \n"+
"a.description, \n"+
"a.amount, \n"+
"a.guid \n"+
"FROM BankTransactions as a \n"+
"LEFT OUTER JOIN BankTransactionCategories as b \n"+
"ON a.category = b.categoryCode \n"+
"WHERE b.categoryCode is null \n"+
") as x \n"+
") as z \n"+
"WHERE (z.RowNumber >= ?)";
stmt = conn.prepareStatement(sqlQuery);
stmt.setInt(1, RowCountToDisplay);
stmt.setInt(2, StartIndex);
ResultSet rs = null;
try{
rs = stmt.executeQuery();
} catch (Exception Error){
System.out.println("Error: "+Error);
}
Cảm ơn ! trước
'@ P0' là tham số rowcounttodisplay bạn –
bạn có thể cung cấp sql thực tế gây ra lỗi? Có vẻ như bạn không cung cấp đúng cách 'RowCountToDisplay' – VMAtm