Bonjour
J'ai lu le tutoriel de Sheik Yerbouti sur le Sql dynamique, ainsi que les fils de ce forum que j'ai pu trouver sur la question, mais j'ai encore des zones pas tres claires dans ma tete.
Mon but est surement simple et courant : un formulaire de recherche (sur 1 ou plusieurs champs de ma table) doit passer en parametre a ma procedure les valeurs des champs voulus, puis afficher les lignes correspondantes.
Si je ne m'abuse, il faut que je teste pour chaque champ si une valeur de recherche a ete saisie, car si je fais tout betement un curseur avec des clauses "where champ = valeur" et que l'utilisateur n'a pas choisi ce critere la requete va me retourner que les enregistrements pour lesquels le champ est vide (alors que je ne veux en fait pas de restriction). Donc sql dynamique, en testant si valeur is not null pour chaque champ avant de le rajouter dans ma clause where.
Avant de taper tout le code detaillé j'ai voulu commence par une version simple que voici :
:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 PROCEDURE liste_personnes (p_id_site VARCHAR2, p_id_service VARCHAR2, p_id_dpt VARCHAR2) IS TYPE curseur_liste IS REF CURSOR; liste curseur_liste; BEGIN open liste for 'select * from personne order by nom, prenom'; for personne in liste loop htp.p('id : '||liste.id_personne); end loop;
Je ne comprends pas pourquoi j'ai une erreur de compilation "LISTE' is not a procedure or is undefined" sur la ligne "for ...".
Merci
Loko
Partager