尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Oracle如何查询SEQUENCE的当前值而不增加SEQUENCE的值

Oracle如何查询SEQUENCE的当前值而不增加SEQUENCE的值
📅 发布时间:2026/6/19 18:44:55

Oracle如何查询SEQUENCE的当前值而不增加SEQUENCE的值

2025-12-10 17:17  潇湘隐者  阅读(0)  评论(0)    收藏  举报

在Oracle数据库中,如何查询一个序列(SEQUENCE)的当前值呢? 我们知道,如果当前会话直接查询序列的CRURRVAL,而不先查询序列的NEXTVAL就会报错:"ORA-08002: sequence SEQ_TEST.CURRVAL is not yet defined in this session". 如下所示:

SQL> create sequence kerry.seq_test2  start with 13  increment by 14  maxvalue 999995  nocache;Sequence created.SQL> SQL> select kerry.seq_test.nextval from dual;NEXTVAL
----------1SQL> select kerry.seq_test.currval from dual;CURRVAL
----------1

如果退出当前会话,我们重新登录,模拟实际环境,DBA想查询序列(SEQUENCE)的的当前值,如果用这种方法,必须先查询序列的NEXTVAL后才能获取序列的CURRVAL

SQL> select kerry.seq_test.currval from dual;
select kerry.seq_test.currval from dual
*
ERROR at line 1:
ORA-08002: sequence SEQ_TEST.CURRVAL is not yet defined in this sessionSQL> select kerry.seq_test.nextval, kerry.seq_test.currval from dual;NEXTVAL    CURRVAL
---------- ----------2          2SQL> 

此时, 很多人可能想到通过系统视图DBA_SEQUENCES的LAST_NUMBER查询.

SQL> SET LINESIZE 255
SQL> COL SEQUENCE_OWNER FOR A16;
SQL> COL SEQUENCE_NAME FOR A30;
SQL> COL MAX_VALUE FOR 9999999999999999999999999999999999;
SQL> SELECT SEQUENCE_OWNER, SEQUENCE_NAME,MAX_VALUE, LAST_NUMBER  2  FROM DBA_SEQUENCES3  WHERE SEQUENCE_NAME=UPPER(TRIM('&SEQUENCE_NAME'));
Enter value for sequence_name: SEQ_TEST
old   3: WHERE SEQUENCE_NAME=UPPER(TRIM('&SEQUENCE_NAME'))
new   3: WHERE SEQUENCE_NAME=UPPER(TRIM('SEQ_TEST'))SEQUENCE_OWNER   SEQUENCE_NAME                                            MAX_VALUE LAST_NUMBER
---------------- ------------------------------ ----------------------------------- -----------
KERRY            SEQ_TEST                                                     99999           3SQL> 

此时LAST_NUMBER的值减去1就是序列的当前值. 那么这种方法可行吗? 答案是对于NOCACHE属性的序列, 它是准确的.但是一旦序列
设置了CACHE的话,那么它的值就不准确了.因为DBA_SEQUENCES中的LAST_NUMBER是缓存段的边界值,不是真正的“当前已分配值”,更
不能代替序列的CURRVAL。它主要用于DBA监控,不能用来做业务计算。

那么有没有一种方法比较靠谱的方法查询序列的当前值而不增加序列的当前值呢. 还真有这么一种方法.我们可以从X$KGLOB中获取
序列(SEQUENCE)的当前值.

查看某个具体OWNER下面所有序列的当前值

SET LINESIZE 250;
COL KGLNAOWN FOR A16
COL KGLNAOBJ FOR A30
SELECT KGLNAOWN, KGLNAOBJ, KGLOBTN0-KGLOBTN1 AS SEQ_CURRVAL 
FROM X$KGLOB
WHERE KGLOBTYD='SEQUENCE' AND KGLNAOWN =UPPER(TRIM('&SEQ_OWNER'))
ORDER BY 1;

查看某个具体序列的当前值

SET LINESIZE 250;
COL KGLNAOWN FOR A16
COL KGLNAOBJ FOR A30
SELECT KGLNAOWN, KGLNAOBJ, KGLOBTN0-KGLOBTN1 AS SEQ_CURRVAL 
FROM X$KGLOB
WHERE KGLOBTYD='SEQUENCE' AND KGLNAOWN =UPPER(TRIM('&SEQ_OWNER'))AND KGLNAOBJ =UPPER(TRIM('&SEQ_NAME'))
ORDER BY 1;

如下所示:

SQL> SET LINESIZE 250;
SQL> COL KGLNAOWN FOR A16
SQL> COL KGLNAOBJ FOR A30
SQL> SELECT KGLNAOWN, KGLNAOBJ, KGLOBTN0-KGLOBTN1 AS SEQ_CURRVAL 2  FROM X$KGLOB3  WHERE KGLOBTYD='SEQUENCE' 4    AND KGLNAOWN =UPPER(TRIM('&SEQ_OWNER'))5  ORDER BY 1;
Enter value for seq_owner: kerry
old   4:   AND KGLNAOWN =UPPER(TRIM('&SEQ_OWNER'))
new   4:   AND KGLNAOWN =UPPER(TRIM('kerry'))KGLNAOWN         KGLNAOBJ                       SEQ_CURRVAL
---------------- ------------------------------ -----------
KERRY            SEQ_TEST                                 3SQL> 
扫描上面二维码关注我
如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

相关新闻

  • 2025 十大免费版权素材站:商用正版高清图片下载与 AI 工具适配指南 - 品牌2026
  • 系统调用-write
  • 2025年全自动封膜仪品牌推荐/哪个品牌评价好/全自动封盖机哪个品牌性价比高/有哪些品牌 - 品牌推荐大师1

最新新闻

  • 从Demo狂欢到生产落地,AI Agent系统化测评完整实践指南
  • 旧金饰变现不想亏?这5家桂林回收门店报价较实在 - 嵩山路大王
  • Java SpringBoot+Vue3+MyBatis . Web考编论坛网站系统源码|前后端分离+MySQL数据库
  • 2026 哈尔滨首饰回收门店盘点 | 梵克雅宝本地老店报价汇总 - 讯息早知道
  • NAS上部署AgentMemory:DeepSeek压缩+Tailscale远程访问实战
  • AI就绪数据:打造企业智能核心引擎

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号