欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle中function的递归

程序员文章站 2022-06-12 10:12:48
...
之前在测试一个FUNCTION的时候都是用pl/sql提供的test,但我今天写一个函数需要递归的时候就不知道怎么做了,还好见别人用sql测了我写的函数,所以这个递归就好写多了,废话少说测试FUNCTION的sql如下:
SELECT FUNCTIONNAME('参数') FROM DUAL;
有递归的sql如下:

create or replace function IS_BLOCK
(IN_DOMAINID IN NUMBER
) return NUMBER is
VAR_COUNT NUMBER;
VAR_PARENTID NUMBER;
Result NUMBER;
begin
SELECT COUNT(ID) INTO VAR_COUNT FROM BLOCK_LOG WHERE RESULTSTATUS IN (0, 2) AND SOURCEID = IN_DOMAINID;
IF VAR_COUNT = 0 THEN
SELECT PARENTID INTO VAR_PARENTID FROM DOMAINTREE WHERE DOMAINID = IN_DOMAINID;
/*判断是否是根节点*/
IF VAR_PARENTID = 0 THEN
Result := 0;
ELSE
SELECT TEST_FUNCTION(VAR_PARENTID) INTO Result FROM DUAL;
END IF;
ELSE
Result := 1;
END IF;
return Result;
end IS_BLOCK;
相关标签: function