可能重复:
是否可以在 sql 中使用字母数字序列生成器
如何在 Oracle 中编写一个函数来生成一个字符串,如 A0001、A0002、..A9999、... AA0001、AA9999、... AZ0001、AZ9999、... 用于员工 ID。
我从这个逻辑开始,但只能生成 A001 到 Z999:
CREATE OR REPLACE procedure GLOBALSHIFTER.p1 ( v1 in varchar2 default 'A') IS
id varchar2(4);
p1 number(2) := ascii(substr(v1,1,1));
p2 number(2);
p3 number(2) ;
c number(1) :=1;
begin
select s1.nextval into p2 from dual;
If p2 < 1000 then
id:= concat(chr(p1), lpad(p2,3,0));
ELSE
select s1.nextval into p2 from dual;
p1 := p1 + 1;
id := concat(chr(p1), lpad(p2,3,0));
END IF;
insert into t1 values(id);
commit;
end;