最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

利用Oracle存储过程生成树编码

来源:动视网 责编:小采 时间:2020-11-09 12:54:18
文档

利用Oracle存储过程生成树编码

利用Oracle存储过程生成树编码:需求 字段 描述 备注 ID 主键,32位UUID TYPE_CODE 编码 如:1-01-003 PARENT_ID 父节点ID,32 需求 字段 描述 备注 ID 主键,32位UUID TYPE_CODE 编码 如:1-01-003 PARENT_ID 父节点ID,32位UUID SOR
推荐度:
导读利用Oracle存储过程生成树编码:需求 字段 描述 备注 ID 主键,32位UUID TYPE_CODE 编码 如:1-01-003 PARENT_ID 父节点ID,32 需求 字段 描述 备注 ID 主键,32位UUID TYPE_CODE 编码 如:1-01-003 PARENT_ID 父节点ID,32位UUID SOR


需求 字段 描述 备注 ID 主键,32位UUID TYPE_CODE 编码 如:1-01-003 PARENT_ID 父节点ID,32

需求

字段

描述

备注

ID

主键,32位UUID

TYPE_CODE

编码

如:1-01-003

PARENT_ID

父节点ID,,32位UUID

SORT_NUM

排序编号

正整数

假设顶级节点的TYPE_CODE为字符1,写存储过程把表中所有的节点TYPE_CODE生成好;

二级节点前面补一个龄,三级补两个零,依次类推;

实现关键点

不知道系统有多少层级,需要递归调用

通过递归调用自身;

如何动态在TYPE_CODE前面填充‘0’;通过计算‘-’的个数来确定层级,从而确定前缀的个数

tree_level:= (length(p_code)-length(replace(p_code,'-',''))) + 1;

前面填充前缀‘0’字符

lpad(to_char(cnt),tree_level,'0')

存储过程代码

CREATEOR REPLACE PROCEDURE INI_TREE_CODE

(

V_PARENT_ID IN VARCHAR2

)AS

p_id varchar2(32);

p_code varchar2(256);

sub_num number(4,0);

tree_level number(4,0);

cnt number(4,0) default 0;

cursor treeCur(oid varchar2) is

select id,TYPE_CODE from eval_index_type

where parent_id = oid

order by sort_num;

BEGIN

sub_num := 0;

select id,type_code into p_id,p_code

from eval_index_type

where id = V_PARENT_ID

order by sort_num;

for curRow in treeCur(p_id) loop

cnt := cnt +1;

tree_level :=(length(p_code)-length(replace(p_code,'-',''))) + 1;

update eval_index_type set type_code =p_code || '-' || lpad(to_char(cnt) ,tree_level,'0')

where id = curRow.id;

select COUNT(*) into sub_num fromeval_index_type where parent_id = p_id;

if sub_num > 0 then

INI_TREE_CODE (curRow.id);

end if;

end loop;

ENDINI_TREE_CODE;

本文永久更新链接地址:

文档

利用Oracle存储过程生成树编码

利用Oracle存储过程生成树编码:需求 字段 描述 备注 ID 主键,32位UUID TYPE_CODE 编码 如:1-01-003 PARENT_ID 父节点ID,32 需求 字段 描述 备注 ID 主键,32位UUID TYPE_CODE 编码 如:1-01-003 PARENT_ID 父节点ID,32位UUID SOR
推荐度:
标签: 生成 编码 oracle
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top