create or replace function func_newid(p_length in integer :=32,p_code in varchar2:='') return varchar2 is
/*生成id
p_length 生成id指定长度
p_code 指定编号
*/
Result varchar2(50);
v_id varchar2(50);
v_length integer:=32;-- 32位
begin
IF p_length is not null THEN
v_length := p_length;
END IF;
v_length := v_length-17;-- 减去时间长度
IF p_code is not null THEN
v_length := v_length-length(p_code); -- 减去编号长度
END IF;
IF v_length<0 THEN
v_length :=0;
END IF;
-- 将日志信息输出到数据库的日志表或者直接输出到控制台
-- DBMS_OUTPUT.PUT_LINE(v_length);
select to_char(systimestamp, 'yyyymmddhh24missff3')||p_code|| substr(cast(dbms_random.value as varchar2(30)),2,v_length) into v_id from dual;
return(v_id);
end func_newid;
oracle函数 创建格式化时间id
最新推荐文章于 2024-10-14 19:48:27 发布