字段
描述
備註
id主鍵,32位uuid
type_code
編碼如:1-01-003
parent_id
父節點id,32位uuid
sort_num
排序編號
正整數假設頂級節點的type_code為字元1,寫儲存過程把表中所有的節點type_code生成好;
二級節點前面補乙個齡,**補兩個零,依次類推;
n 不知道系統有多少層級,需要遞迴呼叫
通過遞迴呼叫自身;
n 如何動態在type_code前面填充『0』;通過計算『-』的個數來確定層級,從而確定字首的個數
tree_level:= (length(p_code)-length(replace(p_code,'-',''))) + 1;
n 前面填充字首『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樹的儲存過程
來自網上 第一步 建立表 it create table it id number primary key,cont varchar2 255 pid number isleaf number 1 0代表非葉子節點 1代表葉子節點。grade number 2 第二步 向資料中插入資料並提交事務 i...
oracle儲存過程生成xml檔案
oracle儲存過程生成xml檔案 create or replace procedure pro oracletoxml personid varchar2,name varchar2,address varchar2,tel varchar2,ip varchar2,email varchar2...
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...