0

可能重复:
是否可以在 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;
4

0 回答 0