oracle分页查询代码实例
时间: 2023-10-28 19:28:57 浏览: 39
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY column_name) AS row_num, *
FROM table_name
)
WHERE row_num BETWEEN start_row AND end_row;
其中,start_row和end_row是分页中的起始行和结束行,column_name是用于排序的列名,table_name是要查询的表名。
相关问题
使用plsql对oracle分页查询代码示例
下面是一个使用PL/SQL实现Oracle分页查询的示例代码:
DECLARE
v_start_row NUMBER := 1; -- 起始行号
v_end_row NUMBER := 10; -- 结束行号
BEGIN
-- 定义游标
DECLARE
CURSOR c_data IS
SELECT *
FROM table_name
ORDER BY column_name;
-- 定义变量
v_row_count NUMBER := 0;
v_current_row NUMBER := 0;
-- 循环读取数据
BEGIN
FOR r_data IN c_data LOOP
v_row_count := v_row_count + 1;
v_current_row := v_current_row + 1;
-- 判断是否达到起始行号
IF v_row_count >= v_start_row THEN
-- 输出数据
dbms_output.put_line(r_data.column1 || ', ' || r_data.column2);
-- 判断是否达到结束行号
IF v_current_row >= v_end_row THEN
EXIT;
END IF;
END IF;
END LOOP;
END;
END;
Java调用oracle分页查询的代码
以下是Java调用Oracle分页查询的代码示例:
```java
public List<User> getUsers(int pageNum, int pageSize) {
try {
Connection conn = getConnection(); // 获取数据库连接
String sql = "SELECT * FROM user ORDER BY id";
PreparedStatement pstmt = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = pstmt.executeQuery();
int start = (pageNum - 1) * pageSize;
int end = start + pageSize;
List<User> userList = new ArrayList<>();
int rowNum = 0;
while (rs.next()) {
rowNum++;
if(rowNum > start && rowNum <= end) {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
userList.add(user);
}
}
rs.close();
pstmt.close();
conn.close();
return userList;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
```
该方法传入两个参数:pageNum为当前页码,pageSize为每页显示的数据条数。方法内部通过获取数据库连接,执行sql语句,使用ResultSet的游标进行分页查询,并将查询结果封装成User对象,最终返回一个List<User>类型的数据。需要注意的是,需要在sql语句中加上ORDER BY子句,保证结果集的顺序是确定的。