Advertisement
Aniket_Goku

assi9

Nov 20th, 2020
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.82 KB | None | 0 0
  1. CREATE TABLE category
  2. (
  3.     categoryid VARCHAR(4) primary key,
  4.     categoryname VARCHAR(50)
  5. );
  6. CREATE TABLE services
  7. (
  8.     servicesid VARCHAR(4) primary key,
  9.     categoryid VARCHAR(4),
  10.     servicesname VARCHAR(50),
  11.     gst_rate NUMBER,
  12.     constraints fk_cat foreign key (categoryid) references category(categoryid) ON DELETE cascade
  13. );
  14.  
  15. --insert
  16. INSERT INTO category VALUES('c01','commonly_used_goods_and_services');
  17. INSERT INTO category VALUES('c02','standard_goods_and _service_slab_1');
  18. INSERT INTO category VALUES('c03','standard_goods_and _service_slab_2');
  19. INSERT INTO category VALUES('c04','goods_and _service_luxary');
  20. INSERT INTO category VALUES('c05','exempt_service');
  21.  
  22.  
  23. --insert services
  24. INSERT INTO services VALUES ('s01','c01','Service1',NULL);
  25. INSERT INTO services VALUES ('s02','c02','Service2',NULL);
  26. INSERT INTO services VALUES ('s03','c03','Service3',NULL);
  27. INSERT INTO services VALUES ('s04','c04','Service4',NULL);
  28. INSERT INTO services VALUES ('s05','c05','Service5',NULL);
  29. INSERT INTO services VALUES ('s06','c01','Service6',NULL);
  30. INSERT INTO services VALUES ('s07','c02','Service7',NULL);
  31. INSERT INTO services VALUES ('s08','c05','Service8',NULL);
  32. INSERT INTO services VALUES ('s09','c04','Service9',NULL);
  33. INSERT INTO services VALUES ('s10','c03','Service10',NULL);
  34. INSERT INTO services VALUES ('s11','c05','Service11',NULL);
  35.  
  36. --pl/sql blocks
  37. --1>
  38. DECLARE
  39.  
  40. BEGIN
  41.         UPDATE services
  42.         SET gst_rate=5
  43.         WHERE categoryid = (    SELECT categoryid
  44.                                                 FROM category
  45.                                                 WHERE categoryname='commonly_used_goods_and_services');
  46.        
  47. END;
  48. /
  49.  
  50.  
  51. --2>
  52. DECLARE
  53. BEGIN
  54.         UPDATE services
  55.         SET gst_rate=12
  56.         WHERE categoryid = (    SELECT categoryid
  57.                                                 FROM category
  58.                                                 WHERE categoryname='standard_goods_and _service_slab_1');
  59.        
  60.  
  61. END;
  62. /
  63. --3>
  64. DECLARE
  65. BEGIN
  66.         UPDATE services
  67.         SET gst_rate=18
  68.         WHERE categoryid = (    SELECT categoryid
  69.                                                 FROM category
  70.                                                 WHERE categoryname='standard_goods_and _service_slab_2');
  71. END;
  72. /
  73. --4>
  74. DECLARE
  75. BEGIN
  76.         UPDATE services
  77.         SET gst_rate=28
  78.         WHERE categoryid = (    SELECT categoryid
  79.                                                 FROM category
  80.                                                 WHERE categoryname='goods_and _service_luxary');
  81. END;
  82. /
  83. --(II) trigger
  84. CREATE OR REPLACE TRIGGER trg_exe
  85. before UPDATE ON services
  86. FOR each ROW
  87. DECLARE
  88. id VARCHAR(4);
  89. rate NUMBER;
  90.  CURSOR c1
  91.  IS
  92.  SELECT  categoryid,gst_rate INTO id,rate
  93.  FROM services;
  94.  BEGIN
  95.     OPEN c1 ;  
  96.     LOOP
  97.             FETCH c1 INTO id,rate;
  98.             EXIT WHEN c1%notfound;
  99.             IF id='c05' THEN
  100.                 raise_application_error(-20003,'UPDATING is not possible on exempt services ');
  101.             END IF;
  102.     END LOOP;
  103.     CLOSE c1;
  104. END trg_exe;
  105. /
  106. UPDATE services
  107.         SET gst_rate=28
  108.         WHERE categoryid = (    SELECT categoryid
  109.                                                 FROM category
  110.                                                 WHERE categoryname='exempt_service');
  111.  
  112. --select * from services;
  113. --select * from category;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement