Bonjour,
Je code une procèdure stockée sous oracle en utilisant le PL/SQL et je suis confronté à un problème de chaine de carartères. En effet je fait appel à un groupe de chaines de caractàre dans un select de ma procédure en utilisant l'opérateur 'IN'. Cependant je n'arrive pas à afficher ma requête correctement. Ce qui se trouve dans la parenthèse est sensé etre entre cote.
Voici mon code
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
25
26
27
28
create or replace
PROCEDURE TEST_PROC_BIS(TABLE_EIM_OU_REJET IN VARCHAR2,BATCH_NUM_INTERFACE VARCHAR2)
IS
FoundTable_1 VARCHAR(30);
var_owner VARCHAR(30);
l_query varchar2(1000);
var_nb_lignes NUMBER;
var_statut_eim_1 varchar(50):= 'IMPORTED';
var_statut_eim_2 varchar(50):= 'DUP_RECORD_EXISTS';
var_statut_eim_3 varchar(50):= 'DUP_RECORD_EXISTS_IN_EIM_TBL';
var_statut_eim_4 varchar(50):= 'MERGED';
var_statut_eim_5 varchar(50):= 'MERGED_INTO';
var_statut_eim_6 varchar(50):= 'DELETED';
var_existe_etape_eim_ou_rej EXCEPTION;
BEGIN
l_query := 'SELECT count(*) FROM ' ||TABLE_EIM_OU_REJET||' 
                WHERE IF_ROW_BATCH_NUM='||BATCH_NUM_INTERFACE|| ' AND IF_ROW_STAT NOT IN
                                                                                      ('||var_statut_eim_1||','
                                                                                      ||var_statut_eim_2||','
                                                                                      ||var_statut_eim_3||','
                                                                                      ||var_statut_eim_4||','
                                                                                      ||var_statut_eim_5||','
                                                                                      ||var_statut_eim_6||')';                                                                          
            --EXECUTE IMMEDIATE l_query into var_nb_lignes;
            dbms_output.put_line(l_query);
EXCEPTION 
    WHEN var_existe_etape_eim_ou_rej THEN dbms_output.put_line('Le nom de l etape : "'||TABLE_EIM_OU_REJET||'" n''est pas valide');    
END;
J'obteniens en sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT count(*) FROM SIEBEL.EIM_CONTACT 
                WHERE IF_ROW_BATCH_NUM=561212070 AND IF_ROW_STAT NOT IN
                                                                                      (IMPORTED,DUP_RECORD_EXISTS,DUP_RECORD_EXISTS_IN_EIM_TBL,MERGED,MERGED_INTO,DELETED)
Donc je n'ai pas de cotes qui encadre mes chaines.(exemple 'IMPORTED','DUP_RECORD_EXISTS').

Si vous avez une idée ou des suggestions. Elles seront les bienvenues.