1.创建一个package及一个body
CREATE OR REPLACE PACKAGE Hierarchy
IS
TYPE BranchTableType IS TABLE OF VARCHAR2(4000)
INDEX BY BINARY_INTEGER;
BranchTable BranchTableType;
FUNCTION Branch(vLevel IN NUMBER,
vValue IN VARCHAR2,
vDelimiter IN VARCHAR2 DEFAULT CHR(0))
RETURN VARCHAR2;
PRAGMA RESTRICT_REFERENCES(Branch,WNDS);
END Hierarchy;
CREATE OR REPLACE PACKAGE BODY Hierarchy
IS
ReturnValue VARCHAR2(4000);
FUNCTION Branch(vLevel IN NUMBER,
vValue IN VARCHAR2,
vDelimiter IN VARCHAR2 DEFAULT CHR(0))
RETURN VARCHAR2
IS
BEGIN
BranchTable(vLevel) := vValue;
ReturnValue := vValue;
FOR I IN REVERSE 1..vLevel - 1 LOOP
ReturnValue := BranchTable(I)|| vDelimiter || ReturnValue;
END LOOP;
RETURN ReturnValue;
END Branch;
END Hierarchy;
2.调用时用Hierarchy.Branch(Level,Name, ' ')代替Sys_Connect_By_Path(Name, ' ')
本文介绍了一种使用PL/SQL通过创建自定义包和包体来实现层次结构的方法。该方法提供了一个Branch函数,用于生成层级路径字符串,类似于Sys_Connect_By_Path的功能。文章详细展示了如何创建和调用这个自定义函数。
1943

被折叠的 条评论
为什么被折叠?



