Recherche par mots clés avec ORACLE

Fermé
Cinamon - 18 nov. 2008 à 17:43
 kikoooooooo - 19 nov. 2008 à 11:36
Bonjour,
J'ai à priori un soucis de synthaxe avec ma procédure PL/SQL de recherche par mots clés dans ma table LIVRE. Ma procédure est de la forme:

create or replace procedure rechercher(mot1 VARCHAR) IS
monTitre VARCHAR(50);
BEGIN
SELECT titre INTO monTitre
FROM livre
WHERE UPPER(monTitre) LIKE '%mot1%';

EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('Aucun livre ne correspond à votre
recherche');
WHEN others THEN
NULL;
END rechercher;
/

LE problème, c'est que ma requete ne trouve jamais aucun livre !! Même si en paramêtre je rentre un mot qui figure dans le titre de mon livre ! Y a t'il un pb dans ma façon d'écrire ma requete ???

Merci pour votre aide !!!

Si ça peut être utile ma table livre est de la forme :
create table livre(
id_livre number not null primary key,
titre varchar(50)
);

2 réponses

Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 17:56
Est-ce qu'en faisant la requête manuellement, ça marche ?

SELECT titre
FROM livre
WHERE UPPER(monTitre) LIKE '%mot1%';

en changeant nomTitre et mot1.

Ce serait pas un problème de majuscule/minuscule, puisque tu changes montitre en majuscule
et pas mot1 (il est peut-être déjà en majuscule ???)
0
Effectivement il y avait ce pb de majuscule/minuscule, merci bcq pr la remarque, maitenant ma requete fonctionne comme cela:

SELECT titre
FROM livre
WHERE UPPER(titre) LIKE UPPER('%fl%');

MAIS le probleme (à savoir pas de résultats au final) persiste qd j'intègre le code à la procédure de la façon suivante :

create or replace procedure rechercher(mot1 VARCHAR) IS
monTitre VARCHAR(50);
BEGIN
SELECT titre INTO monTitre
FROM livre
WHERE UPPER(monTtitre) LIKE UPPER('%mot1%');

EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('Aucun livre ne correspond à votre recherche');
WHEN others THEN
NULL;
END rechercher;
/

Je ne suis pas sûr de la façon dont je récupère 'mot1' et monTitre, est-ce bien correct ?
0
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25 > Cinamon
18 nov. 2008 à 23:05
Désolé, je n'irai pas plus loin en ce qui concerne PL/SQL, je l'ai jamais utilisé.
Tu as testé ta requête en dehors de PL/SQL ? Directement en SQL sur ta base ?
Si elle marche, j'ai plus de solution...
0
Cinamon > Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009
18 nov. 2008 à 23:27
Oui la requête fonctionne, c'est dans la procédure qu'il y a un pb !
0
kikoooooooo
19 nov. 2008 à 11:36
Ca sent le M2GSB STYLE PAR ICI :):):):):):):):):):):):):):)
0