首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle中的分页和锁定

Oracle中的分页和锁定
EN

Stack Overflow用户
提问于 2012-08-22 06:27:22
回答 1查看 587关注 0票数 2

我在Oracle中看到了很多关于使用rownum或排名分析函数进行分页的答案。但是,我特别希望对这些分页结果应用锁定。问题在于,因为Oracle中的大多数分页黑客使用内联视图,所以应用for update是非法的。

那么,有没有办法同时执行这两个任务,最好是在同一个SQL语句中?

我们现在尝试的一个例子..。

代码语言:javascript
复制
select * 
from (
    select ...
    from t
    where ...
    order by ...
)
where rownum <= ? 
for update

我们得到的错误是ORA-02014:, cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-22 13:43:18

以下是您可以执行的操作的示例

代码语言:javascript
复制
SQL> create table t as select object_id, owner, object_name, created from all_objects where rownum <= 100;

Table created.

SQL> 
SQL> select *
  2    from t
  3   where rowid in
  4         (select rid
  5            from (select rowid rid, row_number() over(order by object_id) rn from t)
  6           where rn between 11 and 20)
  7     for update;

OBJECT_ID OWNER OBJECT_NAM CREATED
--------- ----- ---------- ---------
       20 SYS   ICOL$      06-MAR-11
       15 SYS   UNDO$      06-MAR-11
       17 SYS   FILE$      06-MAR-11
       13 SYS   UET$       06-MAR-11
       19 SYS   IND$       06-MAR-11
       14 SYS   SEG$       06-MAR-11
       21 SYS   COL$       06-MAR-11
       16 SYS   TS$        06-MAR-11
       12 SYS   FET$       06-MAR-11
       18 SYS   OBJ$       06-MAR-11

10 rows selected.
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12063965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档