J'ai créé une procédure Pl/SQL qui permet de faire une recherche par rapport à une chaîne donnée. Son fonctionnement:
- Split de la chaîne passée en argument
- Parcours de la liste résultante
- Pour chaque itération de boucle, on rempli une table temporaire avec le résultat de la recherche par rapport au mot courant
- Remplissage d'un curseur qui servira à alimenter un DataTable sous Visual Studio
Le problème c'est qu’apparemment, la variable qui contient le mot courant n'est pas accepté dans la recherche des occurrences avec le LIKE, voici le code:
Et voici l'erreur lors de la compilation:
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
29
30 PROCEDURE proc_chercher_noms_exploit ( p_nom_exploitation IN VARCHAR2, p_cur OUT r_cursor) IS BEGIN FOR cword IN ( SELECT REGEXP_SUBSTR ( (SELECT p_nom_exploitation FROM DUAL), '[^ ]+', 1, LEVEL) FROM DUAL CONNECT BY LEVEL <= LENGTH ( REGEXP_REPLACE ( (SELECT p_nom_exploitation FROM DUAL), '[^ ]*')) + 1) LOOP INSERT INTO t_tmp_recherche_exploit SELECT DISTINCT nom_exploitation, id_exploitation FROM t_exploitations WHERE nom_exploitation LIKE '%' || cword || '%' ORDER BY nom_exploitation; END LOOP; OPEN p_cur FOR SELECT * FROM t_tmp_recherche_exploit ORDER BY nom_exploitation; END;
Les champs id_exploitation et nom_exploitation sont du même type dans les deux tables utilisées soit:[Warning] ORA-24344: opération réussie avec erreur de compilation
529/51 PLS-00382: expression du mauvais type
(2: 0): Warning: compiled but with compilation errors
Si quelqu'un voit le problème ça m'aiderais, je suis sur ce problème depuis hier je vois plus trop où chercher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ID_EXPLOITATION VARCHAR2 (20 BYTE) NOT NULL, NOM_EXPLOITATION VARCHAR2 (50 BYTE)
Partager