Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MEMBER FUNCTION getBalance(Acc NUMBER,
- Obj NUMBER DEFAULT NULL,
- bDt DATE DEFAULT NULL,
- eDt DATE DEFAULT NULL,
- rw NUMBER DEFAULT NULL) RETURN NUMBER IS
- num NUMBER;
- ROW NUMBER := NVL(rw, SELF.transID);
- bDate DATE;
- eDate DATE;
- BEGIN
- bDate := NVL(bDt,SYSDATE - 365*200);
- eDate := NVL(eDt,SYSDATE);
- --+index(money_dist XIF3MONEY_DIST) по CLIENT_ID
- IF Obj IS NULL THEN
- IF ROW IS NOT NULL THEN
- SELECT SUM(trans_sum) INTO num
- FROM (SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND debet = Acc
- AND log_id <= ROW
- UNION ALL
- SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- -trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND credit = Acc
- AND log_id <= ROW);
- ELSE
- SELECT SUM(trans_sum) INTO num
- FROM (SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND debet = Acc
- AND trans_date BETWEEN bDate AND eDate
- UNION ALL
- SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- -trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND credit = Acc
- AND trans_date BETWEEN bDate AND eDate);
- END IF;
- ELSE
- IF ROW IS NOT NULL THEN
- SELECT SUM(trans_sum) INTO num
- FROM (SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND debet = Acc
- AND debet_id = Obj
- AND log_id <= ROW
- UNION ALL
- SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- -trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND credit = Acc
- AND credit_id = Obj
- AND log_id <= ROW);
- ELSE
- SELECT SUM(trans_sum) INTO num
- FROM (SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND debet = Acc
- AND debet_id = Obj
- AND trans_date BETWEEN bDate AND eDate
- UNION ALL
- SELECT /*+index(money_dist XIF3MONEY_DIST)*/
- -trans_sum
- FROM money_dist
- WHERE client_id = clientID
- AND credit = Acc
- AND credit_id = Obj
- AND trans_date BETWEEN bDate AND eDate);
- END IF;
- END IF;
- RETURN ROUND(NVL(num,0),2);
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement