PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 17-01-2014 11:13:53

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

problème oracle client

Bonjour,

J’ai une requête qui s’exécute correctement sur une machine et sur l’autre elle affiche le message d’erreur

Select Error: ORA-01422: exact fetch returns more than requested number of rows

Malgré que les deux se connectent sur la même base.

le requête est de type

Code: SQL

 select a,b, (select g into x from table) c from tables 

L’affichage de ce message est logique car le sou requête retourne plus d’une ligne mais pourquoi sur des machines le message ne s’affiche pas et sur d’autres s’affiche

Dernière modification par infopower (17-01-2014 15:07:38)


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#2 17-01-2014 11:21:08

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

Re: problème oracle client

Version Oracle 10g
outil: pl/SQL developper


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#3 17-01-2014 13:12:48

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: problème oracle client

Bonjour,

Tu ne filtre pas les données de ton select imbriqué?

Je pense que tu devrait avoir quelque chose du genre,

Code: sql

select table_2.a,table_2.b, (select table_1.x from table_1 where table_1.cle = table_2.champs) c from table_2


Car au vu du message retour il te dis qu'il essaye de mettre x lignes de "table" provenant de la requête imbriqué dans chacune des lignes du select principal.


Si c'est pas le cas peux tu mettre les requêtes (en masquant le nom réel des champs si nécessaire)

Dernière modification par Van (17-01-2014 13:16:25)


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#4 17-01-2014 14:12:01

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: problème oracle client

Et d'après une petite recherche internet quand tu n'as pas le message c'est pas forcément que tu n'as pas le problème, c'est juste que tu n'as pas le message...


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#5 17-01-2014 14:43:01

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: problème oracle client

Ton autre requête peut très bien ne renvoyé qu'une seule ligne au passage si la requête imbriqué est filtré sans avoir de clause where en lien avec la requête principale.

L'erreur remonté par ton SGBD est pour le même type d'erreur que l'exemple ci dessous avec un = à la place d'un in dans une clause where utilisant une requête imbriqué.

Code: sql

Select * from table_1 where table_1.a = (select table_2.a from table_2) -- Si table 2 ne comporte qu'une seule ligne OK sinon KO

Select * from table_1 where table_1.a in (select table_2.a from table_2) -- Pas de plantage.



Au niveau code erreur avec DB2 j'ai le même que ça soit dans un where comme ici ou dans le select comme dans ton exemple. Le libellé erreur étant assez similaire.

Code:

SQL0811N  Le résultat d'un FULLSELECT scalaire, d'une instruction SELECT INTO ou VALUES INTO est supérieur à une ligne.

Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#6 17-01-2014 14:57:11

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

Re: problème oracle client

Bonjour,

Merci pour vos réponses.

On es d'accord sue le message d'erreur le système doit afficher ce message car la sou requête retourne plus qu'une ligne.

La question pourquoi le message s'affiche que un oracle client et ne s'affiche pas sur l'autre.

Code: SQL

SELECT a,b, (select t from table1 where a1 = o.b) c
  FROM table2 o

Cordialement

Dernière modification par infopower (17-01-2014 15:06:45)


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#7 17-01-2014 15:02:08

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: problème oracle client

Sans doute parceque les 2 postes ne se connectent pas avec le même client Oracle et que l'un est moins buggé que l'autre.


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#8 20-01-2014 08:06:00

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: problème oracle client

Est ce que le tests est effectué sur la même base avec le même jeu de donnée?
Est ce que la donnée a1 de table1 peux être en doublon? Ou est ce qu'il y a une contrainte d'unicité ( ou de clé primaire) sur ce champs?


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22