Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 06/12/2011, 10h11   #1
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Par défaut J'ai (encore) trouvé un bug

Décidément, quand on pousse un peu, Oracle c'est vraiment pas fiable comme SGBD...

Avec une structure de table :

TIE (CODSOC number, TYPTIE varchar2(3), SIGTIE varchar2(12), TYPGRP varchar2(3), SIGGRP varchar2(12), + d'autres colonnes)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT 'dtc'
FROM tie t1
LEFT OUTER JOIN tie t2 ON t2.codsoc = t1.codsoc AND t2.typtie = t1.typgrp AND t2.sigtie = t1.siggrp
LEFT OUTER JOIN tie t3 ON t3.codsoc = t2.codsoc AND t3.typtie = t2.typgrp AND t3.sigtie = t2.siggrp
LEFT OUTER JOIN tie t4 ON t4.codsoc = t3.codsoc AND t4.typtie = t3.typgrp AND t4.sigtie = t3.siggrp
LEFT OUTER JOIN tie t5 ON t5.codsoc = t4.codsoc AND t5.typtie = t4.typgrp AND t5.sigtie = t4.siggrp
LEFT OUTER JOIN tie t6 ON t6.codsoc = t5.codsoc AND t6.typtie = t5.typgrp AND t6.sigtie = t5.siggrp
LEFT OUTER JOIN tie t7 ON t7.codsoc = t6.codsoc AND t7.typtie = t6.typgrp AND t7.sigtie = t6.siggrp
LEFT OUTER JOIN tie t8 ON t8.codsoc = t7.codsoc AND t8.typtie = t7.typgrp AND t8.sigtie = t7.siggrp
WHERE t1.codsoc = 100
AND t1.typtie = 'CLI'
AND t1.sigtie = '243392';
=> Si on enlève 'dtc' et qu'on met une étoile :

Code :
1
2
3
4
5
6
ORA-00600: internal error code, arguments: [qctstc2o1], [1], [0], [0], [1], [0], [0], []
00600. 00000 -  "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
*Cause:    This IS the generic internal error number FOR Oracle program
           exceptions.	This indicates that a process has encountered an
           exceptional condition.
*Action:   Report AS a bug - the first argument IS the internal error number


Super pratique pour écrire une requête à tâtons si on ne peut plus utiliser *...
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 10h14   #2
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Et pendant qu'on y est, un deuxième

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
SELECT c.clequi, decode(c.clequi, t1.sigtie, '1', t2.sigtie, '2', t3.sigtie, '3', t4.sigtie, '4', t5.sigtie, '5', t6.sigtie, '6', t7.sigtie, '7', t8.sigtie, '8'/*, t9.sigtie, '9', t10.sigtie, '10', t10.siggrp, '11'*/, 'X') niveau, c.cleqoi, c.prxnet, c.datapp, c.datval
FROM cts c
INNER JOIN tie t1 ON t1.codsoc = c.codsoc
LEFT OUTER JOIN tie t2 ON t2.codsoc = t1.codsoc AND t2.typtie = t1.typgrp AND t2.sigtie = t1.siggrp
LEFT OUTER JOIN tie t3 ON t3.codsoc = t2.codsoc AND t3.typtie = t2.typgrp AND t3.sigtie = t2.siggrp
LEFT OUTER JOIN tie t4 ON t4.codsoc = t3.codsoc AND t4.typtie = t3.typgrp AND t4.sigtie = t3.siggrp
LEFT OUTER JOIN tie t5 ON t5.codsoc = t4.codsoc AND t5.typtie = t4.typgrp AND t5.sigtie = t4.siggrp
LEFT OUTER JOIN tie t6 ON t6.codsoc = t5.codsoc AND t6.typtie = t5.typgrp AND t6.sigtie = t5.siggrp
LEFT OUTER JOIN tie t7 ON t7.codsoc = t6.codsoc AND t7.typtie = t6.typgrp AND t7.sigtie = t6.siggrp
LEFT OUTER JOIN tie t8 ON t8.codsoc = t7.codsoc AND t8.typtie = t7.typgrp AND t8.sigtie = t7.siggrp
--left outer join tie t9 on t9.codsoc = t8.codsoc and t9.typtie = t8.typgrp and t9.sigtie = t8.siggrp
--left outer join tie t10 on t10.codsoc = t9.codsoc and t10.typtie = t9.typgrp and t10.sigtie = t9.siggrp
WHERE c.codsoc = 100
AND c.achvte = 'V'
AND c.typcot = 'LIG'
AND decode(c.datval, ' ', '99999999') >= '20110606'
AND c.datapp <= '20110606'
AND t1.typtie = 'CLI' AND t1.sigtie = '243392'
AND c.cleqoi LIKE '2750300%';
=> Si je remet l'auto-jointure sur tie t9 :

Code :
1
2
3
4
5
6
 
ORA-01445: cannot SELECT ROWID FROM, OR sample, a JOIN VIEW without a key-preserved TABLE
01445. 00000 -  "cannot select ROWID from, or sample, a join view without a key-preserved table"
*Cause:    
*Action:
Erreur à la ligne 20, colonne 13
Heureusement que je devrais pouvoir m'en sortir avec une CTE...
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 10h16   #3
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Bugs constatés sur la version :

Citation:
Oracle Database 10g Release 10.1.0.5.0 - Production
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 10h41   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 434
Points : 10 434
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Oui, les ORA-00600 arrivent de temps à autre.
Par contre votre requête... Ne serait-ce pas une "simple" récursion ?

Est-ce que vous ne pouvez pas vous appuyer sur ce bout de code pour construire votre requête ?
Code :
1
2
3
4
5
6
7
    SELECT level, t1.*
      FROM tie t1
start WITH t1.typtie = 'CLI'
       AND t1.sigtie = '243392'
connect BY t1.codsoc = prior t1.codsoc
       AND t1.typgrp = prior t1.typtie
       AND t1.siggrp = prior t1.sigtie;
NB : j'ai peut-être mis les prior du mauvais côté, je me trompe toujours tant que je n'ai pas essayé.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 11h10   #5
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Citation:
Envoyé par Waldar Voir le message
Ne serait-ce pas une "simple" récursion ?
Oui c'est ça, sauf qu'au départ j'avais que 3 niveaux, du coup j'étais parti sur une auto-jointure, mais finalement il y en a plus

Citation:
Envoyé par Waldar Voir le message
Est-ce que vous ne pouvez pas vous appuyer sur ce bout de code pour construire votre requête ?
Code :
1
2
3
4
5
6
7
    SELECT level, t1.*
      FROM tie t1
start WITH t1.typtie = 'CLI'
       AND t1.sigtie = '243392'
connect BY t1.codsoc = prior t1.codsoc
       AND t1.typgrp = prior t1.typtie
       AND t1.siggrp = prior t1.sigtie;
NB : j'ai peut-être mis les prior du mauvais côté, je me trompe toujours tant que je n'ai pas essayé.
C'est ce que j'essaie de faire (dans l'autre topic que j'ai créé ensuite).
Mais j'y arrive pas
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 08h46   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
bravo d'avoir trouvé un bug sur une version qui n'est plus supportée depuis 4 ans. As-tu essayé en 11.2.0.3 ? Sinon ça ne vaut vraiment pas la peine de contacter Oracle Support...
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider 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 15h44.


 
 
 
 
Partenaires

Hébergement Web