You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用currval查询所有序列的名称及对应当前值

序列currval批量查询实现方案

注意:Oracle 中序列的currval仅在**当前会话已调用过对应序列的nextval**后才会返回合法值,未调用过nextval的情况下直接查询会抛出ORA-08002错误。

方案1:已知序列名称直接拼接(适配你当前3个序列的场景)

不需要复杂逻辑,直接用UNION ALL拼接三个单序列查询语句即可,一条语句直接返回结果:

SELECT 'seq1' AS sequence_name, seq1.currval AS current_value FROM dual
UNION ALL
SELECT 'seq2' AS sequence_name, seq2.currval AS current_value FROM dual
UNION ALL
SELECT 'seq3' AS sequence_name, seq3.currval AS current_value FROM dual;

如果序列不在当前登录用户的schema下,需要在序列名前加schema前缀,例如your_schema.seq1.currval。

方案2:动态查询当前用户所有序列的currval

如果序列数量不固定、不想手动拼接查询语句,可以用动态SQL能力实现自动遍历查询:

SELECT 
  sequence_name,
  TO_NUMBER(extractvalue(xmltype(dbms_xmlgen.getxml('select '||sequence_name||'.currval from dual')),'/ROWSET/ROW/CURRVAL')) AS current_value
FROM user_sequences;

如果需要查询其他schema下的序列,将user_sequences替换为all_sequences,并添加WHERE owner = '目标SCHEMA名称大写'的过滤条件即可。

内容的提问来源于stack exchange,提问作者Ron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:24:04