Advertisement
geochareas

PL/SQL Practice Tuesday

Dec 3rd, 2019
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.62 KB | None | 0 0
  1. ----------- PRACTICE 01 -----------
  2. CREATE OR REPLACE FUNCTION factorial(x IN NUMBER)
  3. RETURN NUMBER
  4. IS
  5.     y NUMBER := 1;
  6.     i NUMBER;
  7.  
  8. BEGIN
  9.  
  10.     IF x < 0 THEN
  11.         DBMS_OUTPUT.put_line('Factorial cant be less than 0!');
  12.        
  13.     ELSE
  14.         FOR i IN 1 .. x LOOP
  15.             y := y * i;
  16.            
  17.         END LOOP;    
  18.        
  19.     END IF;
  20.    
  21.     RETURN y;        
  22. END;
  23. /
  24.  
  25. DECLARE
  26.     fact NUMBER;
  27. BEGIN
  28.      DBMS_OUTPUT.put_line('Factorial:' || factorial(5));
  29. END;
  30.  
  31. ----------- END PRACTICE 01 -----------
  32.  
  33. ----------- PRACTICE 02 -----------
  34. CREATE OR REPLACE TRIGGER emp_update
  35. BEFORE UPDATE ON emp
  36.  
  37. FOR EACH ROW
  38.  
  39. DECLARE
  40. name VARCHAR(64);
  41. BEGIN
  42.  
  43.  
  44.     DBMS_OUTPUT.put_line('Old sal was ' || :OLD.sal || ' euro and became ' || :NEW.sal || ' (' || (:NEW.sal - :OLD.sal) || ')');
  45.  
  46.  
  47. END;
  48. /
  49.  
  50. SELECT * FROM emp;
  51. UPDATE emp SET sal = 7100 WHERE empno = 7698;
  52.  
  53. ----------- END PRACTICE 02 -----------
  54.  
  55. ----------- PRACTICE 03 -----------
  56. -- CREATE TABLE users (
  57. -- id integer,
  58. -- username varchar(16),
  59. -- password varchar(32),
  60.  
  61. -- CONSTRAINT user_primary PRIMARY KEY (id)
  62. -- );
  63.  
  64. INSERT INTO users VALUES (1, 'geochareas', 'incorrect');
  65.  
  66. CREATE OR REPLACE TRIGGER users_ins
  67. BEFORE INSERT ON users
  68.  
  69. FOR EACH ROW
  70. DECLARE
  71.     same_pass NUMBER;
  72. BEGIN
  73.     SELECT COUNT(*) INTO same_pass
  74.     FROM users
  75.     WHERE password = :NEW.password;
  76.    
  77.     DBMS_OUTPUT.put_line(same_pass || ' users have the same password (' || :NEW.password || ')');
  78. END;
  79. /
  80.  
  81. SELECT * FROM USER;
  82.  
  83. INSERT INTO users VALUES (2, 'geochareas2', 'incorrect');
  84.  
  85. ----------- END PRACTICE 03 -----------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement