• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle 生成序列号存储过程

mysql 搞代码 4年前 (2022-01-09) 32次浏览 已收录 0个评论

项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展 一、序列号存储表 — Create tablecreate table SYS_

项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展

一、序列号存储表

— Create table
create table SYS_GENKEY
(
DATESTR VARCHAR2(50),
MAXCOUNT NUMBER,
TYPE NUMBER
)
— Add comments to the columns
comme来&源gao@dai!ma.com搞$代^码%网nt on column SYS_GENKEY.DATESTR
is ‘ 时间’;
comment on column SYS_GENKEY.MAXCOUNT
is ‘当天最大值’;
comment on column SYS_GENKEY.TYPE
is ‘类型’;

二、功能实现存储过程

CREATE OR REPLACE PROCEDURE “P_GEN_KEY”
(
retVal out varchar2, –返回生成序号
intype in varchar2, –序号类型
inCount in varchar2 –序列号补0位数
)
as
nowDateStr varchar2(50);–当前年月日
nowmaxcount number(20); –当天最大序号
IS_EXIST NUMBER; –数据是否存在
begin
–取到当前年月日
select to_char(sysdate,’yyyymmdd’) into nowDateStr from dual;
–取到当天最大key
select max(t.maxcount) into nowmaxcount from sys_genkey t where t.datestr = nowDateStr and t.type = intype;
–每天加1
–为空则设置为0
if nowmaxcount is null then
nowmaxcount := 0;
end if;
nowmaxcount := nowmaxcount + 1;

–更新临时表
SELECT COUNT(1) INTO IS_EXIST FROM sys_genkey t where t.datestr = nowDateStr and t.type = intype;
IF (IS_EXIST != 0) THEN
update sys_genkey set MAXCOUNT = nowmaxcount where datestr = nowDateStr and type = intype;
else
insert into sys_genkey (DATESTR,MAXCOUNT,TYPE)values(nowDateStr,nowmaxcount,intype);
end if;

–补0
select nowDateStr||LPAD (nowmaxcount , inCount , ‘0’) key into retVal from dual;
end;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle 生成序列号存储过程
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址