修改sequenc number

简介: create or replace procedure CHANGE_SEQ_NUMBER( PI_SEQ_OWNER VARCHAR2 , PI_SEQNAME VARCHAR2 , PI_LAST_NUMBER NUMBER) IS V_LastValue integer; V_incr...

create or replace procedure CHANGE_SEQ_NUMBER( PI_SEQ_OWNER VARCHAR2 , PI_SEQNAME VARCHAR2 , PI_LAST_NUMBER NUMBER) IS
V_LastValue integer;
V_increment_by integer;
V_cache_size integer;
V_last_number integer;
V_SQL VARCHAR2(2000) ;
BEGIN
SELECT DP.increment_by , DP.cache_size , DP.last_number
INTO V_increment_by , V_cache_size , V_last_number
FROM dba_sequences DP WHERE DP.sequence_owner = PI_SEQ_OWNER AND DP.sequence_name =PI_SEQNAME ;
IF PI_LAST_NUMBER > V_last_number THEN
V_SQL:= ' alter sequence '||PI_SEQ_OWNER||'.'||PI_SEQNAME||' increment by ' ||( PI_LAST_NUMBER-V_last_number )||' nocache ';
EXECUTE IMMEDIATE V_SQL ;

V_SQL:= ' select '||PI_SEQ_OWNER||'.'||PI_SEQNAME||'.nextval from dual ' ;
EXECUTE IMMEDIATE V_SQL INTO V_LastValue ;

V_SQL:= ' alter sequence '||PI_SEQ_OWNER||'.'||PI_SEQNAME||' increment by 1 nocache ';
EXECUTE IMMEDIATE V_SQL ;

LOOP

 V_SQL:= ' select '||PI_SEQ_OWNER||'.'||PI_SEQNAME||'.currval  from dual ' ;
 EXECUTE IMMEDIATE V_SQL INTO V_LastValue ;
 
 exit when V_LastValue >= PI_LAST_NUMBER - 1;
 
 V_SQL:= ' select '||PI_SEQ_OWNER||'.'||PI_SEQNAME||'.nextval  from dual ' ;
 EXECUTE IMMEDIATE V_SQL INTO V_LastValue ;
AI 代码解读

END LOOP ;

IF V_cache_size >1 THEN
 V_SQL:= ' alter sequence '||PI_SEQ_OWNER||'.'||PI_SEQNAME||' increment by ' ||V_increment_by||' cache '||V_cache_size ;
ELSE
 V_SQL:= ' alter sequence '||PI_SEQ_OWNER||'.'||PI_SEQNAME||' increment by ' ||V_increment_by||' nocache ' ;
END IF;
 EXECUTE IMMEDIATE V_SQL  ;
AI 代码解读

END IF ;
END;

目录
打赏
0
0
0
0
1
分享
相关文章
阿里云服务器ESSD Entry和ESSD等云盘解析:区别、应用场景与选择参考
阿里云服务器提供了包括ESSD Entry、ESSD、SSD云盘、高效云盘等丰富多样的云盘类型,以满足不同用户在不同业务场景下的需求。每种云盘都有其独特的性能特点和适用场景,为了帮助用户更好地理解和选择云盘,本文将详细解析阿里云服务器各个云盘的定义、区别、选择参考以及常见问题。让大家对阿里云服务器不同云盘的性能和适用场景有更全面的了解,尤其是ESSD Entry云盘和ESSD云盘,并能够根据自己的需求做出最适合自己的选择。
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第9天】JavaScript进阶:AJAX与Fetch API对比。AJAX用于异步数据交换,XMLHttpRequest API复杂,依赖回调。Fetch API是现代、基于Promise的解决方案,简化请求处理。示例:`fetch('url').then(r => r.json()).then(data => console.log(data)).catch(err => console.error(err))`。注意点包括检查HTTP状态、错误处理、CORS、Cookie和超时。Fetch提高了异步代码的可读性,但需留意潜在问题。
283 0
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
144 0
Nuxt3 实战 (十):使用 Supabase 实现 RESTful 风格 API 接口
这篇文章介绍了如何使用Supabase实现RESTful风格的API接口,用于网站分类和子站点的增删改查(CURD)功能。文章首先阐述了表设计,包括ds_categorys和ds_websites两张表的列名、类型和用途,并提到了为每张表添加的user_id和email字段以支持用户身份识别。接着,文章描述了接口设计,以ds_websites表为例,说明了如何通过RESTful API实现CURD功能,并给出了使用SupabaseClient实现插入数据的相关代码。文章最后提供了项目效果预览和总结,指出学习了Nuxt3创建接口及调用Supabase数据库操作。
228 2
Nuxt3 实战 (十):使用 Supabase 实现 RESTful 风格 API 接口
edac是检测什么的,和centos内存条损害检测工具
【6月更文挑战第1天】edac是检测什么的,和centos内存条损害检测工具
466 2
使用rpm包在Linux上安装Oracle软件和创建数据库
在Linux上安装Oracle软件的过程相当复杂,让很多初学者望而却步。但在Oracle 18c以后Oracle推出了使用rpm包安装Oracle数据库软件的安装方式,安装两个(预安装包和数据库安装包)rpm包即可完成整个Oracle数据库软件的安装。
486 0
使用rpm包在Linux上安装Oracle软件和创建数据库
视频传输中QoS(Quality of Service)质量保证参数
视频传输中QoS(Quality of Service)质量保证参数
256 0
基于AutoJs实现的薅羊毛专业版第五次大更新
基于AutoJs实现的薅羊毛专业版第五次大更新
179 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问