Problème avec Paramètre [PL/SQL]
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 :
Code:
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 |
Ce qui me renvoit :
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 :aie::aie:
Code:
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'); |
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 )
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 ! :)