Bonjour,
Je suis débutant en PL/SQL, et j'essaye de faire un package permettant l'affichage d’éléments d'une base de données d'une bibliothèque, mais je n'arrive pas a afficher le résultats de mes procédures qui ont bien compilé.
J'ai bien entré le "set serveroutput on", mais rien à faire, et je ne sais pas si ça vient de mon code ou non.
La première procédure utilise du SQL dynamique (c'est une contrainte qu'on m'impose), j'ai essayé de suivre les structures que j'ai trouvé sur le net. La seconde utilise un curseur, mais ne retourne rien non plus.
Je suppose que j'ai fais des erreurs impardonnables, mais comme je n'ai aucune expérience dans ce langage, j'aurais besoin de votre aide !
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 create or replace PACKAGE AFFICHAGE AS TYPE livretuple IS RECORD( nom livres.nom_livre%TYPE); CURSOR les_livres RETURN livretuple; procedure nb_a_rendre (adherent NUMBER ); procedure lst_livres_dispo; END AFFICHAGE; create or replace PACKAGE BODY AFFICHAGE AS CURSOR les_livres RETURN livretuple IS SELECT nom_livre FROM livres where dispo = 1; procedure nb_a_rendre (adherent NUMBER) IS query_str VARCHAR2(1000); num NUMBER; BEGIN query_str := 'SELECT COUNT(id_emprunt) FROM emprunt WHERE id_adherent = '|| TO_CHAR(adherent) ||' AND date_retour is null'; EXECUTE IMMEDIATE query_str INTO num; dbms_output.put_line ('Nombre de livre à rendre :' || num); END; PROCEDURE lst_livres_dispo IS s livretuple; BEGIN FOR s IN les_livres LOOP DBMS_OUTPUT.PUT_LINE(s.nom); END LOOP; END; END AFFICHAGE;
Partager