Bonjour tout le monde,
J'ai créée une procédure stockée utilisant en paramètre une valeur saisie par l'utilisateur.
Cette valeur est déclarée dans un .sql qui appelle cette fonction.
Mon problème est que je n'arrive pas, dans le .sql, à référencer cette valeur.
1 2 3 4 5 6 7 8
| /* Fonction qui retourne le nombre de personnes ayant un job passe en parametre. */
CREATE OR REPLACE FUNCTION func_nb_job (v_s_job IN VARCHAR2) RETURN NUMBER IS
v_nb_job number;
BEGIN
SELECT count(*) INTO v_nb_job FROM emp WHERE job=v_s_job;
return v_nb_job;
END;
/ |
1 2 3 4 5 6 7 8 9 10
| /* Appel de la fonction avec saisie interactive du paramètre */
set serveroutput on;
DECLARE
v_nb_job NUMBER;
BEGIN
v_nb_job := func_nb_job('&METIER'); /* Saisie intéractive du paramètre METIER */
dbms_output.put_line('Le metier ' || ' est exerce par ' || v_nb_job || ' personnes.');
END;
/ |
Au lieu de mettre
dbms_output.put_line('Le metier ' || ' est exerce par ' || v_nb_job || ' personnes.');
je voudrais mettre
dbms_output.put_line('Le metier ' || '&METIER' || ' est exerce par ' || v_nb_job || ' personnes.');
mais si je fais ça, il y aura deux saisies interactives par l'utilisateur car j'utilise deux fois '&METIER'.
Voilà, c'est tout... ça a l'air bête mais je plante sur ce problème.
Je sais que je pourrais contourner le problème en mettant le résultat dans la fonction mais ce n'est pas ce que je cherche.
dbms_output.put_line('Le metier ' || 'v_s_job' || ' est exerce par ' || v_nb_job || ' personnes.');
Par avance merci pour vos réponses.
Partager