Advertisement
aadddrr

f_get_next_parent_ou_bu

Dec 5th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: f_get_next_parent_ou_bu(bigint, bigint)
  2.  
  3. -- DROP FUNCTION f_get_next_parent_ou_bu(bigint, bigint);
  4.  
  5. CREATE OR REPLACE FUNCTION f_get_next_parent_ou_bu(bigint, bigint)
  6.   RETURNS bigint AS
  7. $BODY$
  8. DECLARE
  9.     pOuTypeBuId         ALIAS FOR $1;
  10.     pOuId               ALIAS FOR $2;
  11.    
  12.     vResult             bigint;
  13.    
  14.     vOuParentId         bigint;
  15.     vNextOuParentId     bigint;
  16.     vOuTypeId           bigint;
  17. BEGIN
  18.  
  19.     SELECT A.ou_parent_id, A.ou_type_id INTO vOuParentId, vOuTypeId
  20.     FROM t_ou A
  21.     WHERE A.ou_id = pOuId;
  22.  
  23.     IF vOuParentId = -99 THEN
  24.         IF vOuTypeId = pOuTypeBuId THEN
  25.             vResult := pOuId;
  26.         ELSE
  27.             vResult := -99;
  28.         END IF;
  29.     ELSE
  30.         SELECT A.ou_parent_id, A.ou_type_id INTO vNextOuParentId, vOuTypeId  
  31.         FROM t_ou A
  32.         WHERE A.ou_id = vOuParentId;
  33.            
  34.         IF vOuTypeId = vOuTypeBuId THEN
  35.             vResult := vOuParentId;
  36.         ELSE
  37.             SELECT f_get_next_parent_ou_bu(pOuTypeBuId, vNextOuParentId) INTO vResult;
  38.         END IF;
  39.     END IF;
  40.     return vResult;    
  41. END;
  42. $BODY$
  43.   LANGUAGE plpgsql VOLATILE
  44.   COST 200;
  45. ALTER FUNCTION f_get_next_parent_ou_bu(bigint, bigint)
  46.   OWNER TO sts;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement