Advertisement
Guest User

Untitled

a guest
Apr 27th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.35 KB | None | 0 0
  1. ----1----
  2. DECLARE
  3. TYPE t_tab IS TABLE OF NUMBER(2) INDEX BY PLS_INTEGER;
  4. tab t_tab;
  5. dep_id NUMBER(2) := 40;
  6. dep_name VARCHAR2(50);
  7. CURSOR c(c_dep dep_id%TYPE) IS SELECT o.order_id,SUM(oi.quantity*oi.unit_price) AS VALUE
  8. FROM orders o, order_items oi, employees e WHERE o.order_id=oi.order_id AND o.sales_rep_id=e.employee_id AND e.department_id=c_dep
  9. GROUP BY o.order_id ORDER BY VALUE DESC;
  10. BEGIN
  11. FOR i IN 0..4 LOOP
  12. tab(i):=dep_id+i*10;
  13. SELECT department_name INTO dep_name FROM departments WHERE department_id=tab(i);
  14. DBMS_OUTPUT.put_line(tab(i)||' '||dep_name);
  15. FOR r IN c(tab(i)) LOOP
  16. IF c%ROWCOUNT > 0 THEN
  17. DBMS_OUTPUT.put_line(r.order_id||' '||r.VALUE);
  18. ELSE
  19. DBMS_OUTPUT.put_line('Nothing');
  20. END IF;
  21. END LOOP;
  22. END LOOP;
  23. END;
  24. /
  25.  
  26.  
  27. ----2----
  28. DECLARE
  29. TYPE t_table IS TABLE OF NUMBER(4) INDEX BY PLS_INTEGER;
  30. tab t_table;
  31. YEAR NUMBER(4) := 1999;
  32. CURSOR c(c_year year%TYPE) IS SELECT o.order_id,SUM(oi.quantity*oi.unit_price) AS VALUE
  33. FROM orders o, order_items oi WHERE o.order_id=oi.order_id
  34. AND EXTRACT(YEAR FROM o.order_date)=c_year
  35. GROUP BY o.order_id
  36. ORDER BY VALUE DESC;
  37. BEGIN
  38. FOR i IN 0..4 LOOP
  39. tab(i):=YEAR+i;
  40. DBMS_OUTPUT.put_line('Year '||tab(i));
  41. FOR n IN c(tab(i)) LOOP
  42. IF c%rowcount > 0 THEN
  43. DBMS_OUTPUT.put_line(n.order_id||' '||n.VALUE);
  44. ELSE
  45. DBMS_OUTPUT.put_line('Nothing');
  46. END IF;
  47. END LOOP;
  48. END LOOP;
  49. END;
  50. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement