Advertisement
Guest User

RDBMS - Cursor Task

a guest
Apr 15th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.68 KB | None | 0 0
  1. CREATE TABLE TRANSACTIONS
  2. (
  3.     ID VARCHAR2(10),
  4.     AMOUNT NUMBER,
  5.     T_DATE DATE
  6. );
  7.  
  8. CREATE TABLE LOAN_TYPE
  9. (
  10.     SCHEME NUMBER,
  11.     INSTALLMENT NUMBER,
  12.     CHARGE NUMBER,
  13.     MIN_TRANS NUMBER
  14. );
  15.  
  16. CREATE TABLE PAYMENT
  17. (
  18.     NO_INS NUMBER,
  19.     ACC_NO VARCHAR2(10),
  20.     AMOUNT NUMBER,
  21.     DOP DATE
  22. );
  23.  
  24. INSERT INTO LOAN_TYPE VALUES(1, 30, 5, 2000000);
  25. INSERT INTO LOAN_TYPE VALUES(2, 20, 10, 1000000);
  26. INSERT INTO LOAN_TYPE VALUES(3, 15, 15, 500000);
  27.  
  28. INSERT INTO TRANSACTIONS VALUES('100', 1000000, TO_DATE('03/05/2016', 'dd/mm/yyyy'));
  29. INSERT INTO TRANSACTIONS VALUES('100', 2000000, TO_DATE('03/06/2016', 'dd/mm/yyyy'));
  30. INSERT INTO TRANSACTIONS VALUES('101', 300000, TO_DATE('03/07/2016', 'dd/mm/yyyy'));
  31. INSERT INTO TRANSACTIONS VALUES('101', 400000, TO_DATE('03/08/2016', 'dd/mm/yyyy'));
  32. INSERT INTO TRANSACTIONS VALUES('101', 1000000, TO_DATE('03/09/2016', 'dd/mm/yyyy'));
  33. INSERT INTO TRANSACTIONS VALUES('101', 5000000, TO_DATE('03/09/2013', 'dd/mm/yyyy'));
  34. INSERT INTO TRANSACTIONS VALUES('102', 500000, TO_DATE('03/09/2016', 'dd/mm/yyyy'));
  35. INSERT INTO TRANSACTIONS VALUES('103', 500000, TO_DATE('03/12/2016', 'dd/mm/yyyy'));
  36. INSERT INTO TRANSACTIONS VALUES('104', 1000020, TO_DATE('03/11/2016', 'dd/mm/yyyy'));
  37.  
  38.  
  39. CREATE OR REPLACE FUNCTION CAT_FIND(CUS_ID IN VARCHAR2)
  40. RETURN NUMBER
  41. IS
  42. S_TYPE NUMBER;
  43. TOTAL NUMBER;
  44. CURSOR C1 IS
  45. SELECT SCHEME, MIN_TRANS
  46. FROM LOAN_TYPE
  47. ORDER BY MIN_TRANS DESC;
  48. BEGIN
  49. SELECT SUM(AMOUNT) INTO TOTAL
  50. FROM TRANSACTIONS WHERE
  51. ID = CUS_ID AND
  52. (SELECT SYSDATE - TO_DATE(T_DATE, 'DD/MM/YYYY') FROM DUAL) < 365;
  53.  
  54. FOR REC IN C1
  55. LOOP
  56.     IF TOTAL >= REC.MIN_TRANS THEN
  57.         RETURN REC.SCHEME;
  58.     END IF;
  59. END LOOP;
  60. END;
  61. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement