[ORACLE9I, PL/SQL] Select into
Bonjour,
Peux-ont créer un select into en utilisant comme nom de colonne dans la clause where un paramètre (dans mon exemple PE_MAVAR)?. Voici mon exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
FUNCTION ISINEXP(PE_MAVAR IN VARCHAR2) RETURN BOOLEAN
IS
VL_COUNT NUMBER;
BEGIN
SELECT COUNT(*) INTO VL_COUNT
FROM EXPGAB
WHERE PE_MAVAR = 'u';
IF (VL_COUNT<>0) THEN
RETURN TRUE;
END IF;
RETURN FALSE;
END; |
la fonction me retourne toujours false, ce qui ne devrait pas être le cas :( !
Etant donné que ça ne fonctionne pas, j'ai essayé avec un curseur dynamique:
Code:
1 2 3
|
VL_REQ := 'SELECT COUNT(*) FROM EXPGAB WHERE '||PE_MAVAR||' = ''u''';
EXECUTE IMMEDIATE VL_REQ INTO VL_COUNT; |
Ne marche pas non plus :( !
Pourtant, dans les 2 cas, si je met une valeur "en dur" à la place de PE_MAVAR, ça fonctionne!!!
Merci d'avance de votre aide!
Appel de la fonction en question
ça doit être mon appel qui foire. J'appel la fameuse fonction depuis une procédure de la manière suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
PROCEDURE ...
IS
CURSOR c_variables IS
SELECT *
FROM V_VARIABLES
WHERE INSTITUT = PE_INSTITUT
AND VAGUE = PE_VAGUE
AND TY_QUEST = PE_TYQUEST
ORDER BY QRE_ORDRE;
...
BEGIN
...
FOR rec IN c_variables LOOP
-- Si la variable se trouve déjà dans une table d'export en mode modification, on l'indique
IF ISINEXP(rec.VARIABLE) THEN
. . . |
Je passe en paramètre rec.VARABLE (VARIABLE étant le nom d'une colonne de ma vue V_VARIABLE et est de type VARCHAR2(8))!
Si je passe une valeure "en dur", ça fonctionne. exemple:
Code:
1 2 3 4
|
...
IF ISINEXP('CANTON00') THEN
.. |
Qqun voit-il le problème???