Guest User

Untitled

a guest
Apr 26th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. create table hr_records(
  2. emp_id number,
  3. name varchar2(25),
  4. address varchar2(50),
  5. salary number(8,2)
  6. );
  7.  
  8. truncate table dept_records;
  9. truncate table hr_records;
  10.  
  11. create table dept_records(
  12. emp_id number,
  13. dept_id number,
  14. name varchar2(25),
  15. address varchar2(50),
  16. salary number(8,2)
  17. );
  18.  
  19. BEGIN
  20. INSERT INTO hr_records values (1, 'Saman', 'Naxal', 10000);
  21. INSERT INTO hr_records values (2, 'Sumin', 'Mangalbazar', 10000);
  22. INSERT INTO hr_records values (3, 'Suresh', 'Kalanki', 25000);
  23. INSERT INTO hr_records values (4, 'Bikram', 'Putalisadak', 15000);
  24. INSERT INTO hr_records values (5, 'Nitish', 'Satdobato', 10000);
  25. INSERT INTO hr_records values (6, 'Rowan', 'Putalisadak', 18000);
  26. INSERT INTO hr_records values (7, 'Rabin', 'Suryabinayak', 10000);
  27. INSERT INTO hr_records values (8, 'Kripesh', 'Satdobato', 50000);
  28. INSERT INTO hr_records values (9, 'Dikendra', 'Putalisadak', 18000);
  29. INSERT INTO hr_records values (10, 'Bishal', 'Anamnagar', 100000);
  30. END;
  31. /
  32.  
  33. SELECT * FROM HR_RECORDS;
  34.  
  35. BEGIN
  36. INSERT INTO dept_records values (1,100, 'Saman', 'Naxal', 10000);
  37. INSERT INTO dept_records values (2,110, 'Sumin', 'Mangalbazar', 10000);
  38. INSERT INTO dept_records values (3,100, 'Suresh', 'Kalanki', 25000);
  39. INSERT INTO dept_records values (4,800, 'Bikram', 'Putalisadak', 15000);
  40. INSERT INTO dept_records values (5,110, 'Nitish', 'Satdobato', 10000);
  41. INSERT INTO dept_records values (6,800, 'Rowan', 'Putalisadak', 30000);
  42. INSERT INTO dept_records values (7,900, 'Rabin', 'Suryabinayak', 10000);
  43. INSERT INTO dept_records values (8,600, 'Kripesh', 'Satdobato', 50000);
  44. INSERT INTO dept_records values (9,800, 'Dikendra', 'Putalisadak', 18000);
  45. INSERT INTO dept_records values (10,400, 'Bishal', 'Anamnagar', 100000);
  46. --Extra two records in dept_records table
  47. INSERT INTO dept_records values (11,10, 'Sameer', 'Swoyambhu', 180000);
  48. INSERT INTO dept_records values (12,10, 'Juman', 'Swoyambhu', 100000);
  49. INSERT INTO dept_records values (13,100, 'Pratik', 'Nayabazar', 40000);
  50. INSERT INTO dept_records values (14,100, 'Pranjal', 'Maitidevi', 40000);
  51. INSERT INTO dept_records values (15,10, 'Satish', 'Nayabazar', 200000);
  52. INSERT INTO dept_records values (16,10, 'Bidur', 'Kalanki',80000);
  53. END;
  54. /
  55.  
  56. select * from dept_records;
  57.  
  58. --There are some records in dept_records but not reached to hr_records. We have to insert extra records from dept_records into
  59. --hr_records and update the existing salary records whose salary is less then equal to 15000with 10%. Then, it is efficient to
  60. --use MERGE INTO Statement.
  61. set serveroutput on;
  62. DECLARE
  63. l_start number;
  64. BEGIN
  65. l_start := DBMS_UTILITY.get_time;
  66.  
  67. MERGE INTO hr_records H
  68. USING dept_records D
  69. ON (H.emp_id = D.emp_id)
  70. WHEN MATCHED THEN
  71. UPDATE
  72. SET H.salary = H.salary*1.1
  73. DELETE WHERE H.salary > 15000
  74. WHEN NOT MATCHED THEN
  75. INSERT (H.emp_id, H.name, H.address, H.salary)
  76. VALUES(D.emp_id, D.name, D.address, D.salary);
  77.  
  78. DBMS_OUTPUT.PUT_LINE('MERGE :'||ROUND((DBMS_UTILITY.get_time - l_start)/100,2)||' secs');
  79. END;
  80. /
Add Comment
Please, Sign In to add comment