Oracle生成随机数GUID

本文介绍了一种使用Oracle SQL和系统函数生成全局唯一标识符,并通过随机数填充不足部分的方法。核心内容包括Sys_GUID函数、数据转换和长度校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Function GUID(len_in In Number := 32) Return Varchar2 As
	
		lenBase Number(38);
		indexCurr Number(38);
		indexLast Number(38);
	
		v_Str Varchar2(400) := '';
		v_tmp Varchar2(400) := '';
	Begin
		--时间: 2021-03-23
		--功能: 生并返回一个全球唯一的标识符(原始值)转为len_in位数据值。
		--生成数据
		Select Rawtohex(Sys_GUID()) Into v_Str From Dual;
		lenBase := Length(v_Str);
	
		--校验长度
		If len_in <= lenBase Then
			Return(v_Str);
		End If;
	
		indexLast := 1;
		--生成随机数
		For R In (Select RN
							From (Select Rownum rn
										 From Dual
										 Connect By Rownum <= len_in ----- 范围
										 Order By dbms_random.value)
							Where Rownum <= (len_in - lenBase) -----个数
							And RN Between 2 And (lenBase - 1)
							Order By RN Asc)
		Loop
			--组织数据
			indexCurr := r.rn;
			v_tmp := v_tmp || Substr(v_Str, indexLast, indexCurr - indexLast) || Chr(45);
			indexLast := indexCurr;
		End Loop;
		--拼接最后一段
		v_tmp := v_tmp || Substr(v_Str, indexLast, lenBase - indexLast + 1);
	
		Return(v_tmp);
	End;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

長安旧夢

知识的大门打开后,才有真正机会

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值