Advertisement
Aqib12

Untitled

Jul 30th, 2020
2,541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.50 KB | None | 0 0
  1. CREATE TABLE accounts
  2. (
  3.     ID               VARCHAR2(10),
  4.     date_of_creation DATE,
  5.     account_type     VARCHAR2(20),
  6.     balance          NUMBER
  7. );
  8.  
  9.  
  10. SET serverout ON;
  11. CREATE OR REPLACE FUNCTION GEN_ID(date_created IN DATE)
  12.     RETURN VARCHAR2
  13.     IS
  14.     sequence_number NUMBER;
  15.     str_date        VARCHAR2(20);
  16.     sequence_string VARCHAR2(20);
  17. BEGIN
  18.     SELECT COUNT(*) INTO sequence_number FROM accounts;
  19.     sequence_number := sequence_number + 1;
  20.     IF (sequence_number < 10) THEN
  21.         sequence_string := CONCAT('00', TO_CHAR(sequence_number));
  22.     ELSIF (sequence_number < 100) THEN
  23.         sequence_string := CONCAT('0', TO_CHAR(sequence_number));
  24.     ELSE
  25.         sequence_string := TO_CHAR(sequence_number);
  26.     END IF;
  27.  
  28.     str_date := TO_CHAR(date_created);
  29.     RETURN CONCAT(SUBSTR(str_date, -2, 2), CONCAT('AC', TO_CHAR(sequence_string)));
  30. END;
  31. /
  32.  
  33.  
  34. -- checking
  35. DECLARE
  36.     str VARCHAR2(20);
  37. BEGIN
  38.     str := GEN_ID(SYSDATE);
  39.     DBMS_OUTPUT.PUT_LINE(str);
  40. END;
  41. /
  42. -- checking
  43.  
  44.  
  45. -- Trigger
  46. CREATE OR REPLACE TRIGGER before_insert_accounts
  47.     before INSERT
  48.     ON
  49.         accounts
  50.     FOR each ROW
  51. DECLARE
  52.     ID VARCHAR2(10);
  53. BEGIN
  54.     :NEW.date_of_creation := SYSDATE;
  55.     ID := GEN_ID(:NEW.date_of_creation);
  56.     :NEW.ID := ID;
  57. END;
  58. /
  59.  
  60. INSERT INTO accounts(account_type, balance) VALUES ('current', 5000);
  61. INSERT INTO accounts(account_type, balance) VALUES ('savings', 15000);
  62. INSERT INTO accounts(account_type, balance) VALUES ('savings', 50000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement