调用脚本的方式自动的创建或者是更新oracle数据库自带的Seq序列号的值
执行脚本:
CREATE OR REPLACE PACKAGE PKG_QUERY IS -- Author : ADMINISTRATOR
-- Created : 2016/12/8 星期四 10:28:37
-- Purpose : 用做查询游标 -- Public type declarations
TYPE CUR_QUERY IS REF CURSOR; END PKG_QUERY;
/ create or replace function create_seq_func(
seq_name in varchar2 ,/*seq名称*/
bus_table_name in varchar2,/*业务表名*/
pkcloumn_name in varchar2 /*业务表主键名*/
)
return varchar2
is
result varchar2(30000);
type ref_cursor_type is ref cursor;
cursor_ids ref_cursor_type;
cursor_ids_1 ref_cursor_type;
V_NUM number:=0;
v_max_seq number :=1;
v_max_seq_1 number :=1; v_max_sql varchar(4000);
v_max_sql_1 varchar(4000); v_sql_alter varchar(4000);
v_sequence_sql varchar(4000);
begin select count(0) into V_NUM from user_sequences where sequence_name = seq_name;
if V_NUM > 0 then v_max_sql_1:='select to_number(max('||pkcloumn_name||')+100) from '||bus_table_name||' t ';
dbms_output.put_line('_____0_______'||v_max_sql_1);
open cursor_ids_1 for v_max_sql_1 ;
fetch cursor_ids_1 into v_max_seq_1;
/** 判断 是否有id 值查询出来 */
if cursor_ids_1%found then
while cursor_ids_1%found loop
dbms_output.put_line('_____1_______'||v_max_seq_1); ---把自动增长值设置为 业务表的最大值
v_sql_alter :='ALTER SEQUENCE '||seq_name||' INCREMENT BY '|| v_max_seq_1;
dbms_output.put_line('_____3_______'||v_sql_alter);
execute immediate v_sql_alter;
---获取下一个值
v_sql_alter :=' SELECT '||seq_name||'.NEXTVAL FROM DUAL ';
dbms_output.put_line('_____4_______'||v_sql_alter);
-- execute immediate v_sql_alter;
open cursor_ids_1 for v_sql_alter ;
fetch cursor_ids_1 into v_max_seq_1;
/** 判断 是否有id 值查询出来 */
if cursor_ids_1%found then
while cursor_ids_1%found loop
dbms_output.put_line('_____4_1_______'||v_max_seq_1);
v_max_seq:=v_max_seq_1; ---把自动增长值设置为1
v_sql_alter :='ALTER SEQUENCE '||seq_name||' INCREMENT BY 1 ' ;
dbms_output.put_line('_____5_______'||v_sql_alter);
execute immediate v_sql_alter;
---获取下一个值
v_max_sql_1 :=' SELECT '||seq_name||'.NEXTVAL FROM DUAL ';
dbms_output.put_line('_____6_______'||v_max_sql_1); open cursor_ids_1 for v_max_sql_1 ;
fetch cursor_ids_1 into v_max_seq_1;
/** 判断 是否有id 值查询出来 */
if cursor_ids_1%found then
while cursor_ids_1%found loop
dbms_output.put_line('_____2_______'||v_max_seq_1);
v_max_seq:=v_max_seq_1;
fetch cursor_ids_1 into v_max_seq_1;
exit when cursor_ids%notfound or cursor_ids%notfound is null ;
end loop;
end if; fetch cursor_ids_1 into v_max_seq_1;
exit when cursor_ids%notfound or cursor_ids%notfound is null ;
end loop;
end if; fetch cursor_ids_1 into v_max_seq_1;
dbms_output.put_line('_____2_______'||v_max_seq_1);
exit when cursor_ids%notfound or cursor_ids%notfound is null ;
end loop;
end if; else
v_sequence_sql :='create sequence '||seq_name||' minvalue 1 maxvalue 999999 start with 1 increment by 1 cache 20';
dbms_output.put_line('_____11_______'||v_sequence_sql);
execute immediate v_sequence_sql; v_max_sql_1:='select to_number(max('||pkcloumn_name||')+100) from '||bus_table_name||' t ';
dbms_output.put_line('_____10_______'||v_max_sql_1);
open cursor_ids_1 for v_max_sql_1 ;
fetch cursor_ids_1 into v_max_seq_1;
/** 判断 是否有id 值查询出来 */
if cursor_ids_1%found then
while cursor_ids_1%found loop
dbms_output.put_line('_____11_______'||v_max_seq_1); ---把自动增长值设置为 业务表的最大值
v_sql_alter :='ALTER SEQUENCE '||seq_name||' INCREMENT BY '|| v_max_seq_1;
dbms_output.put_line('_____13_______'||v_sql_alter);
execute immediate v_sql_alter;
---获取下一个值
v_sql_alter :=' SELECT '||seq_name||'.NEXTVAL FROM DUAL ';
dbms_output.put_line('_____4_______'||v_sql_alter);
-- execute immediate v_sql_alter;
open cursor_ids_1 for v_sql_alter ;
fetch cursor_ids_1 into v_max_seq_1;
/** 判断 是否有id 值查询出来 */
if cursor_ids_1%found then
while cursor_ids_1%found loop
dbms_output.put_line('_____4_1_______'||v_max_seq_1);
v_max_seq:=v_max_seq_1; ---把自动增长值设置为1
v_sql_alter :='ALTER SEQUENCE '||seq_name||' INCREMENT BY 1 ' ;
dbms_output.put_line('_____5_______'||v_sql_alter);
execute immediate v_sql_alter;
---获取下一个值
v_max_sql_1 :=' SELECT '||seq_name||'.NEXTVAL FROM DUAL ';
dbms_output.put_line('_____6_______'||v_max_sql_1); open cursor_ids_1 for v_max_sql_1 ;
fetch cursor_ids_1 into v_max_seq_1;
/** 判断 是否有id 值查询出来 */
if cursor_ids_1%found then
while cursor_ids_1%found loop
dbms_output.put_line('_____2_______'||v_max_seq_1);
v_max_seq:=v_max_seq_1;
fetch cursor_ids_1 into v_max_seq_1;
exit when cursor_ids%notfound or cursor_ids%notfound is null ;
end loop;
end if; fetch cursor_ids_1 into v_max_seq_1;
exit when cursor_ids%notfound or cursor_ids%notfound is null ;
end loop;
end if; fetch cursor_ids_1 into v_max_seq_1;
dbms_output.put_line('_____17_______'||v_max_seq_1);
exit when cursor_ids%notfound or cursor_ids%notfound is null ;
end loop;
end if; end if; return v_max_seq;
EXCEPTION
WHEN OTHERS THEN RETURN v_max_seq; end;
/
脚本调用
使用plsql 的命令窗口调用:
variable seq varchar2 ;
execute :seq :=create_seq_func('GK_PAYREPORT_SEQ','GK_PAYREPORT','GK_PAYREPORT_ID') ;

调用脚本的方式自动的创建或者是更新oracle数据库自带的Seq序列号的值的更多相关文章
- 使用C#的两种方式OracleClient组件和OleDB组件连接ORACLE数据库
一.使用OracleClient组件连接Oracle .Net框架的System.Data.OracleClient.dll组件(ADO.Net组件),为连接和使用Oracle数据库提供了很大的方便. ...
- Spring Date Jpa on update current_timestamp 自动维护创建时间和更新时间
在数据库里设置默认值current_timestamp可以维护创建时间,设置on update current_timestamp 可以维护更新时间.在JPA中应该如何去做呢?这里还是以上篇Topic ...
- Oracle数据库不能创建表空间及表中文乱码问题
1.不能创建表空间问题 datafile为表空间的存放位置,没有将表空间存放路径指定为orcl数据库时,创建表空间出错如下 查看自己的Oracle安装位置,我的Oracle10g安装在虚拟XP系统中, ...
- JPA注解实体类,给表添加创建时间,更新时间,id的生成以及创建唯一约束
首先创建一个BaseModel,自动生成创建时间和更新时间 @SuppressWarnings("serial") @MappedSuperclass public class B ...
- ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别是fork、source和exec。 1. fork 即通过sh 脚本名进行执行脚本的方式。下面通过一个简单的例子来讲解下它的特性。 创建father.sh,内容如下: #!/bin/bas
? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作.那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别 ...
- centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课
centos shell编程4[分发系统] 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要 ...
- python调用脚本或shell的方式
python调用脚本或shell有下面三种方式: os.system()特点:(1)可以调用脚本.(2)可以判断是否正确执行.(3)满足不了标准输出 && 错误 commands模块特 ...
- 使用redis调用lua脚本的方式对接口进行限流
java端实现: //初始化一个redis可执行的lua DefaultRedisScript<List> defaultRedisScript = new DefaultRedisScr ...
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...
随机推荐
- C# Note35: 异步操作
.NET Framework 为异步操作提供了两种设计模式:使用 IAsyncResult 对象的异步操作与使用事件的异步操作. IAsyncResult 异步设计模式 通过名为 BeginOpera ...
- Shell命令-文件及目录操作之file、md5sum
文件及目录操作 - file.md5sum 1. file:显示文件的类型 file命令的功能说明 用于辨识文件类型.通过 file 指令,我们得以辨识该文件的类型. file命令的语法格式 file ...
- python提取浏览器Cookie
在用浏览器进行网页访问时,会向网页所在的服务器发送http协议的GET或者POST等请求,在请求中除了指定所请求的方法以及URI之外,后面还跟随着一段Request Header.Request He ...
- ESXI 6.5安装详细步骤
网址:http://blog.51cto.com/laotang6/2044861 ESXi是专为运行虚拟机.最大限度降低配置要求和简化部署而设计.只需几分钟时间,客户便可完成从安装到运行虚拟机的全过 ...
- meta标签补充属性(viewport)
我们在开发移动设备的网站时,最常见的的一个动作就是把下面这个东西复制到我们的head标签中: <meta name="viewport" content="widt ...
- mysql数据库建表的基本规范
1.创建表的时候必须指定主键,并且主键建立后最好不要再有数据修改的需求 mysql从5.5版本开始默认使用innodb引擎,innodb表是聚簇索引表,也就是说数据通过主键聚集( 主键下存储该行的数据 ...
- 【洛谷P1313 计算系数】
题目连接 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio&g ...
- Maven pom文件标签解析大全
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...
- The Preliminary Contest for ICPC China Nanchang National Invitational and International Silk-Road Programming Contest
打网络赛 比赛前的准备工作要做好 确保 c++/java/python的编译器能用 打好模板,放在桌面 A. PERFECT NUMBER PROBLEM #include <cstdio> ...
- 3.24网络攻防选拔题部分write up
20175221 3.24网络攻防选拔题部分write up Q1:百度一下,你就知道 解压题目得到一个文件夹和一个网址 打开文件夹,有三张图片 用winhex和stegsolve查看三张图片,没有 ...