Oracle中function的递归

之前在测试一个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)