Bonjour à tous !
J'ai réalisé une procédure faisant un select avec une clause where A = B, avec un curseur afint d'obtenir plusieurs résultats. Tout fonctionne à merveille !
voici un exemple :
Ce qui me renvoit :
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 CREATE OR REPLACE PROCEDURE a_proc AS CURSOR Mon_Curseur IS SELECT REF_BATCH FROM TBL_REF_MAP WHERE TRIGRAMME = 'AA'; TAB Mon_Curseur%ROWTYPE; TYPE TAB_CURSEUR IS TABLE OF TAB%TYPE; StrTab TAB_CURSEUR; BEGIN OPEN Mon_Curseur; FETCH Mon_Curseur BULK COLLECT INTO StrTab; CLOSE Mon_Curseur; FOR indx IN 1..StrTab.COUNT LOOP DBMS_OUTPUT.PUT_LINE(StrTab(indx).REF_BATCH); END LOOP; END a_proc; / EXECUTE a_proc
Procédure PL/SQL terminée.
AA-S****
AA-S****-*********-********
Les deux résultats sont correct
Dans un soucis de perfection, je me suis dit.. allez.. faut que j'envoie mon Trigramme ou bi-gramme en paramètre !
et la ça ce complique
En renvoit j'obtiens toutes les clés qui sont présente dans la table (tout est faux).. le trigramme lui est correcte (ici 'AA' donc je l’envoi bien en paramètre )
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 CREATE OR REPLACE PROCEDURE Entre_Trigramme (Trigramme IN VARCHAR2) AS CURSOR Mon_Curseur IS SELECT REF_BATCH FROM TBL_REF_MAP WHERE TRIGRAMME = Trigramme ; TAB Mon_Curseur%ROWTYPE; TYPE TAB_CURSEUR IS TABLE OF TAB%TYPE; -- must use type StrTab TAB_CURSEUR; BEGIN OPEN Mon_Curseur; FETCH Mon_Curseur BULK COLLECT INTO StrTab; CLOSE Mon_Curseur; FOR indx IN 1..StrTab.COUNT LOOP DBMS_OUTPUT.PUT_LINE(StrTab(indx).REF_BATCH); END LOOP; DBMS_OUTPUT.PUT_LINE('Trigramme en paramètre : -'|| Trigramme ||'-'); END; / EXECUTE Entre_Trigramme ('AA');
Pourquoi ai-je obtenus un tel résultat ? cela doit provenir de ma requête sql, j'ai essayé avec '@' pour la variable Trigramme mais rien n'y fait... j'obtiens des erreurs sql
voilà, Merci de m'aider !
même si vous n'avez pas de solution fiable à 100% mais que vous avez un semblant d'idée ou de piste à explorer faites moi pars de vos commentaires !
Partager