Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2007, 16h59   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2006
Messages : 47
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 47
Points : 11
Points : 11
Par défaut Probleme avec multiple valeur d'un champ

salut :

j'ai un petit souci , mon proleme est :

voila ces deux requetes :

1.
Code :
1
2
3
4
5
6
7
8
SELECT p.nomach
FROM vue_stn_rel_litige p , stn_rel_relcom r
WHERE p.LOGIN = 100293
AND (
(NVL((:FILTRELITIGE ),'0') <> '0' AND EXISTS ( SELECT 'X' FROM factures WHERE soldedevbas <> 0 AND code_statusfac IN (:FILTRELITIGE )))
OR (:FILTRELITIGE = '0' )
)
AND p.numach = r.numach
cette requette donne liste vide (rien).

2.
Code :
1
2
3
4
5
6
7
8
SELECT p.nomach
FROM vue_stn_rel_litige p , stn_rel_relcom r
WHERE p.LOGIN = 100293
AND (
(NVL((:FILTRELITIGE ),'0') <> '0' AND EXISTS ( SELECT 'X' FROM factures WHERE soldedevbas <> 0 AND code_statusfac IN ('DIS02','DIS03','DIS04')))
OR (:FILTRELITIGE = '0' )
)
AND p.numach = r.numach
et cette deuxieme requette donne le vrai resultat (10 ligne).

Pourtant la difference est que j'ai remplacer le :FILTRELITIGE par 'DIS02','DIS03','DIS04' dans la deuxieme requete !!!!!!!!!!!!!!!!!


pouvez vous m'aider svp.
merci d'avance.
Delphieur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 17h23   #2
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Je crois que tu t'es mélangé les pinceaux !

Code :
1
2
code_statusfac in (:FILTRELITIGE )
Tu dois surement utiliser une autre variable ( par exemple :FILTREFACTURE) !
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 17h30   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2006
Messages : 47
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 47
Points : 11
Points : 11
Non justement :

(NVL((:FILTRELITIGE ),'0') <> '0' and Exists ( select 'X' from factures where soldedevbas <> 0 and code_statusfac in (:FILTRELITIGE )))

dans cette ligne je teste si le filtre n'est pas vide je rajoute à ma requette cette condition.

le probleme quand j'execute sous TOAD les deux requettes donnenet pas le meme resultat.
Delphieur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 17h36   #4
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Chez moi 'IN (:FILTRELITIGE)' ne marche pas
(sous TOAD)
Je dois faire
Code :
1
2
code_statusfac in (&FILTRELITIGE )
A mon sens, il n'est pas tres propre de vouloir faire dire deux choses differentes à FILTRELITIGE (soit un flag, soit une liste de valeurs)
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 22h34   #5
Invité régulier
 
Inscription : mai 2004
Messages : 33
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 33
Points : 7
Points : 7
Hello,


Je crois que ton erreur vient du faite que tu veux utiliser une variable pour faire une liste de valeur.

En effet, ta bind variable :FILTRELITIGE ne renvoie qu'une seule valeur donc tu ne peux pas dire que :

avec :FILTRELITIGE := 'DIS02','DIS03','DIS04'
code_statusfac in (:FILTRELITIGE )
<=>
code_statusfac in ( 'DIS02','DIS03','DIS04')

Dans le premier cas on recherche si code_statusfac = "'DIS02','DIS03','DIS04'"

Dans le deuxieme cas on recherche
si code_statusfac = 'DIS02' ou
code_statusfac = 'DIS03' ou
code_statusfac = 'DIS04'

++
stephDeZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h43.


 
 
 
 
Partenaires

Hébergement Web