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
J'obteniens en sortie :
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;
Donc je n'ai pas de cotes qui encadre mes chaines.(exemple 'IMPORTED','DUP_RECORD_EXISTS').
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)
Si vous avez une idée ou des suggestions. Elles seront les bienvenues.
Partager