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:
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;
Et voici l'erreur lors de la compilation:
[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
Les champs id_exploitation et nom_exploitation sont du même type dans les deux tables utilisées soit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ID_EXPLOITATION    VARCHAR2 (20 BYTE) NOT NULL,
NOM_EXPLOITATION   VARCHAR2 (50 BYTE)
Si quelqu'un voit le problème ça m'aiderais, je suis sur ce problème depuis hier je vois plus trop où chercher