生成序列号oracle的方法

生成序列号oracle的方法
思想:
通过一个序列号表,记录当前序列号的最大值,以便取下。每次,何时会把序列号变成大更新。
涉及的桌子:
表:序号hp_no

领域
类型
type_name
VARCHAR2(100)
start_no
VARCHAR2(100)
current_no
VARCHAR2(100)
代码uff1a
1)最大值是由函数得到的,有三个参数,
第一个参数是容易获得不同序列号的类型。
第二个参数是在序列号前面放置特殊字符的前缀。
第三个参数是序列号生成的长度。

代码
创建或替换功能hp_test_getno(
p_type_name在VARCHAR2默认型参数1
p_start_no在VARCHAR2,前缀参数2
p_length数量--序号长度为3

返回空的返回类型

v_result VARCHAR2(100):=;——结果变量1
v_current_no VARCHAR2(100):= ';--电流值变量2
v_num号:= 0;-补充变量3
v_start_no VARCHAR2(100);前缀变量4
v_rowid VARCHAR2(100);-更新行的rowid变量4
开始
v_start_no:= p_start_no;参数值分配给变量
选择计数(*)
为v_num
从hp_no
在type_name = p_type_name和start_no = p_start_no;数量型和相同前缀的价值,主要用于判断是否有序列号
-确定是否没有数据在库中生成初始值插入。
如果v_num = 0 -没有过时
然后
v_current_no:=负载(1,p_length,'0')- p_length;长编号0001
v_result:= v_current_no;前缀和编号是
插入hp_no(type_name,start_no,current_no)
值(p_type_name,p_start_no,v_current_no);记录新的最大
其他的
选择的rowid,current_no + 1
为v_rowid,v_current_no
从hp_no
在type_name = p_type_name和start_no = p_start_no;获得最高加1
v_current_no:=负载(v_current_no,p_length,'0');
更新hp_no
集current_no = v_current_no
在v_rowid rowid =最大值-更新;
最后如果;
如果v_start_no是null或v_start_no = ''then
v_result:= v_current_no;
其他的
v_result:= v_start_no v_current_no | |;
最后如果;
返回v_result;
结束;
使用存储过程调用函数的方法:
代码
-调用函数存储过程
创建或替换程序hp_pro_gettestno

v_firstletter在空,
v_result出空


v_firstvalue VARCHAR2(30);
v_systdate VARCHAR2(30);
开始
选择to_char(SYSDATE,'yyyymm)从双成v_systdate;
v_firstvalue:=(v_firstletter v_systdate | |);
v_result:= hp_test_getno('hptest ',v_firstvalue,4);
结束;
结果uff1a
调用存储过程hp_pro_gettestno('hp ',4);
结果是:hp2016060001

其他的思维:
一种新的显示器,没有序列号,例如获得连续的序列号
方法uff1a
这张表是用来保存未使用的序列号的。当用户输入一个数字时,确定是否包含序列号的首选子表,有时,取出一个,删除这个(防止其他用户不使用);或者调用主表获取新的水。
插入失败时,当前序列号保存到下一首歌的地下表中,取。
删除后,序列号保存到下一首歌的地下桌上。
两个,新的必须显示序列号,比如获得连续的序列号。
方法uff1a
这张表是用来保存未使用的序列号的。当用户输入一个数字时,确定是否包含序列号的首选子表,有时,取出一个,删除这个(防止其他用户不使用);或者调用主表获取新的水。
当用户未保存或插入失败时,当前序列号保存到下一首歌曲的地下表中,取。
删除后,序列号保存到下一首歌的地下桌上。

tag:方法序列号电脑软件Oracle

相关内容