Advertisement
Guest User

Untitled

a guest
Mar 14th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Sa se adauge in tabela produse o inreg noua astfel:
  2. --id_produs ca max + 1, denumire_produs de la tast, descriere de la tast, categorie de la tast, pret_lista si pret_min null
  3. SET SERVEROUTPUT ON
  4. DECLARE
  5. i NUMBER;
  6. BEGIN
  7. SELECT (MAX(id_produs)) + 1 INTO i FROM produse;
  8. INSERT INTO produse VALUES (i, '&denumire_produs', '&descriere', '&categorie', NULL, NULL);
  9. END;
  10.  
  11. SELECT * FROM produse;
  12.  
  13. --Construiti un bloc prin care sa dublati pretul minim al produsului care are id-ul citit de la tastatura
  14. DECLARE
  15. i NUMBER;
  16. pret NUMBER(8,2);
  17. BEGIN
  18. SELECT id_produs, pret_min INTO i, pret FROM produse WHERE id_produs = &id;
  19. pret := pret / 2;
  20. UPDATE produse SET pret_min = pret WHERE id_produs = i;
  21. IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('S-a modificat pretul');
  22. ELSE DBMS_OUTPUT.PUT_LINE('Nu s-a modificat pretul');
  23. END IF;
  24. END;
  25.  
  26. SELECT * FROM produse WHERE id_produs = 3061;
  27.  
  28. --Sa se afiseze numele si salariul tuturor angajatilor
  29. DECLARE
  30. CURSOR c IS SELECT nume, salariul FROM angajati;
  31. v_nume angajati.nume%TYPE;
  32. v_sal angajati.salariul%TYPE;
  33. BEGIN
  34. OPEN c;
  35. LOOP
  36. FETCH c INTO v_nume, v_sal;
  37. EXIT WHEN c%NOTFOUND;
  38. DBMS_OUTPUT.PUT_LINE(v_nume||' '||v_sal);
  39. END LOOP;
  40. CLOSE c;
  41. END;
  42.  
  43. --Sa se construiasca un bloc prin care sa se afiseze pentru fiecare comanda nr_comanda, valoarea si data
  44. DECLARE
  45. CURSOR c IS SELECT nr_comanda, data, SUM(pret * cantitate) AS valoare FROM comenzi JOIN rand_comenzi
  46. USING (nr_comanda)
  47. GROUP BY nr_comanda, data;
  48. b c%ROWTYPE;
  49. BEGIN
  50. OPEN c;
  51. LOOP
  52. FETCH c INTO b;
  53. EXIT WHEN c%NOTFOUND;
  54. DBMS_OUTPUT.PUT_LINE(b.nr_comanda||' '||b.data||' '||b.valoare);
  55. END LOOP;
  56. CLOSE c;
  57. END;
  58.  
  59. --varianta cursor cu for
  60. DECLARE
  61. CURSOR c IS SELECT nr_comanda, data, SUM(pret * cantitate) AS valoare FROM comenzi JOIN rand_comenzi
  62. USING (nr_comanda)
  63. GROUP BY nr_comanda, data;
  64. BEGIN
  65. FOR b IN c
  66. LOOP
  67. DBMS_OUTPUT.PUT_LINE(b.nr_comanda||' '||b.data||' '||b.valoare);
  68. END LOOP;
  69. END;
  70.  
  71. --primele 3 valori mari
  72. DECLARE
  73. CURSOR c IS SELECT nr_comanda, data, SUM(pret * cantitate) AS valoare FROM comenzi JOIN rand_comenzi
  74. USING (nr_comanda)
  75. GROUP BY nr_comanda, data
  76. ORDER BY valoare DESC;
  77. BEGIN
  78. FOR b IN c
  79. LOOP
  80. DBMS_OUTPUT.PUT_LINE(b.nr_comanda||' '||b.data||' '||b.valoare);
  81. EXIT WHEN c%ROWCOUNT = 3;
  82. END LOOP;
  83. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement