netx_iit

Oct/Nov - 2019 ==Q5

Oct 17th, 2020 (edited)
242
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.79 KB | None | 0 0
  1. --Oct/Nov - 2019
  2. --Q5
  3. CREATE TABLE product
  4. (
  5.     prod_no NUMBER primary key,
  6.     name VARCHAR(20) NOT NULL,
  7.     price_per_unit NUMBER,
  8.     quantity_sold NUMBER,
  9.     total_sale NUMBER,
  10.     constraints "ck_qs" CHECK (quantity_sold>0),
  11.     constraints "ck_ppu" CHECK (price_per_unit>0)
  12.    
  13. );
  14. --insert query
  15.         INSERT INTO product VALUES(1,'A.C.',24000,2,NULL);
  16.         INSERT INTO product VALUES(2,'Freeze',16500,4,NULL);
  17.         INSERT INTO product VALUES(3,'Smart_TV',4000,5,NULL);
  18.         INSERT INTO product VALUES(4,'Home_theater',2500,10,NULL);
  19.  
  20. 1)
  21. DECLARE
  22.     no1 NUMBER;
  23.     n1 NUMBER;
  24.     n2 NUMBER;
  25.     n3 NUMBER;
  26.     ans NUMBER;
  27.     PROCEDURE t_S(n1 NUMBER,n2 NUMBER,n3 OUT NUMBER)
  28.     IS
  29.     BEGIN
  30.         n3:=n1*n2;
  31.     END t_s;
  32. BEGIN
  33.     FOR x IN (SELECT * FROM product)
  34.     LOOP
  35.             SELECT QuantitySold,PricePerUnit INTO n1,n2 FROM product WHERE ProdNo=x.ProdNo ;
  36.             t_S(n1,n2,ans);
  37.             UPDATE product SET TotalSale =ans WHERE ProdNo=x.ProdNo;  
  38.  
  39.     END LOOP;
  40. END;
  41. /
  42.  
  43.  
  44. 2)
  45. --function
  46. CREATE OR REPLACE FUNCTION price(no1 NUMBER)
  47.     RETURN  NUMBER AS ans NUMBER;
  48.     BEGIN
  49.         SELECT total_sale INTO ans FROM product WHERE prod_no=no1;
  50.         RETURN ans;
  51.     END price;
  52. --pl\sql block
  53. DECLARE
  54.     p_no NUMBER;
  55.     temp NUMBER;
  56.    
  57. BEGIN
  58.     p_no:=1;
  59.     temp:=price(p_no); 
  60.     DBMS_OUTPUT.put_line(' TOTAL SALE of  prod_no => ' ||p_no ||' is '|| temp);
  61. END;
  62. 3)
  63.  
  64. --trigger
  65. CREATE OR REPLACE TRIGGER p3
  66. before DELETE ON product
  67. FOR EACH ROW
  68.   DECLARE
  69.   tday VARCHAR(10):= TO_CHAR(SYSDATE,'DY');
  70.   BEGIN
  71.     DBMS_OUTPUT.put_line(LENGTH(tday));
  72.     IF DELETING THEN   
  73.         IF tday IN ('SAT','SUN') THEN
  74.             raise_application_error(-20000,'Delete is not allowed....') ;
  75.                 DBMS_OUTPUT.put_line(tday);
  76.         END IF;
  77.     END IF;
  78.  
  79.  END;
  80.   /
  81.  
  82.  
  83. DELETE FROM product WHERE prod_no=4;
  84.  
  85. SELECT * FROM product
  86.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment