Advertisement
Guest User

Untitled

a guest
May 20th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Package pentru diferite informatii despre carti
  2. CREATE OR REPLACE PACKAGE info_carti AS
  3. PROCEDURE afis_carti_2012;
  4. PROCEDURE afis_carti_categ_editura;
  5. FUNCTION afis_vechime_carte (id IN carte.id_carte%TYPE) RETURN NUMBER;
  6. FUNCTION afis_nr_imprumut (id IN carte.id_carte%TYPE) RETURN NUMBER;
  7. END info_carti;
  8.  
  9. CREATE OR REPLACE PACKAGE BODY info_carti AS
  10.  
  11. PROCEDURE afis_carti_2012 IS
  12. CURSOR c IS SELECT id_carte,ISBN,titlu,data_aparitie FROM carte WHERE data_aparitie > '01-01-2012';
  13. id_c carte.id_carte%TYPE;
  14. ISBN_c carte.ISBN%TYPE;
  15. titlu_c carte.titlu%TYPE;
  16. data_aparitie_c carte.data_aparitie%TYPE;
  17. BEGIN
  18. OPEN c;
  19. FOR b IN c LOOP
  20. FETCH c INTO id_c,ISBN_c,titlu_c,data_aparitie_c;
  21. DBMS_OUTPUT.PUT_LINE('Id: '||id_c||' ISBN: '||ISBN_c||' titlu: '||titlu_c||' data aparitie: '||data_aparitie_c);
  22. END LOOP;
  23. CLOSE c;
  24. END afis_carti_2012;
  25.  
  26. PROCEDURE afis_carti_categ_editura IS
  27. titlu_c carte.titlu%TYPE;
  28. categorie_c categorie.nume%TYPE;
  29. editura_c editura.nume%TYPE;
  30. nr_carti NUMBER;
  31. BEGIN
  32. SELECT COUNT(id_carte) INTO nr_carti FROM carte;
  33. FOR i IN 1..nr_carti LOOP
  34. SELECT a.titlu,b.nume,c.nume INTO titlu_c,categorie_c,editura_c FROM carte a JOIN categorie b ON a.id_categorie = b.id_categorie
  35. JOIN editura c ON a.id_editura = c.id_editura WHERE id_carte = i;
  36. DBMS_OUTPUT.PUT_LINE('Cartea cu titlul '||titlu_c||' face parte din categoria '||categorie_c||' si a fost tiparita de editura '||editura_c);
  37. END LOOP;
  38. END afis_carti_categ_editura;
  39.  
  40. FUNCTION afis_vechime_carte (id IN carte.id_carte%TYPE) RETURN NUMBER IS vechime NUMBER;
  41. BEGIN
  42. SELECT ROUND((SYSDATE-data_aparitie)/365) INTO vechime FROM carte WHERE id_carte = id;
  43. RETURN vechime;
  44. END afis_vechime_carte;
  45.  
  46. FUNCTION afis_nr_imprumut (id IN carte.id_carte%TYPE) RETURN NUMBER IS numar NUMBER;
  47. BEGIN
  48. SELECT COUNT(id_carte) INTO numar FROM detalii_imprumut WHERE id_carte = id;
  49. RETURN numar;
  50. END afis_nr_imprumut;
  51. END;
  52.  
  53. BEGIN
  54. info_carti.afis_carti_categ_editura;
  55. END;
  56.  
  57. BEGIN
  58. DBMS_OUTPUT.PUT_LINE('Cartea are vechimea de '||info_carti.afis_vechime_carte(2)||' ani');
  59. END;
  60.  
  61. BEGIN
  62. DBMS_OUTPUT.PUT_LINE('Cartea a fost imprumutata de '||info_carti.afis_nr_imprumut(10)||' ori');
  63. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement