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 12/11/2007, 17h10   #1
Invité régulier
 
Inscription : février 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 49
Points : 9
Points : 9
Par défaut ORA-00910 Probléme Cast

Voila l'environnement est une Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production.

La requête qui pose probléme est la suivante:


Code :
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
31
32
33
34
 
SELECT DISTINCT cast(SO0.nrid AS VARCHAR2(15)) AS RefPartenaire,
                        SO0.societe AS NomCommercial,
                        SO0.adresse AS Adresse,
                        SO0.complement AS Complement,
                        SO0.street_nb AS Norue,
                        SO0.code_post AS CodePostal,
                        SO0.loc AS Commune,
                        NVL(SO0.tel1, SO0.tel2) AS Telephone,
                        SO0.e_mail AS Mail,
                        SO0.web_link AS SiteWeb,
                        '0' AS IsPartenaireSouhait,
                        DECODE(SO0.var65, 'Réseau', '1', '0') AS IsPartenaireReseau,
                        NVL(Xattrib_part.date_attrib,TO_DATE('19000101', 'YYYYMMDD'))
          FROM PR0,
               XPR0_OFFRES,
               SO0,
               XSO0_ZONE,
               XZONES_COMMUNE,
               sysadm.xattrib_part
         WHERE pr0.so0_nrid = so0.nrid
           AND pr0.var1 = 'Réseau Partenaire'
           AND pr0.var2 = 'Signée'
           AND xpr0_offres.pr0_nrid = pr0.nrid
           AND xpr0_offres.type_nrid = 'MAINTEN'
           AND xpr0_offres.marque_nrid = 'DV'
           AND XSO0_ZONE.so0_nrid = SO0.nrid
           AND XZONES_COMMUNE.id_commune = XSO0_ZONE.id_commune
           AND XZONES_COMMUNE.code_insee LIKE SUBSTR('92000', 1, 2) || '%'
           AND xattrib_part.so0_nrid(+) = SO0.nrid
           AND xattrib_part.type_offre(+) = 'Maintenance'
         ORDER BY NVL(Xattrib_part.date_attrib,
                      TO_DATE('19000101', 'YYYYMMDD')),
                  SO0.societe;
Les erreurs produites sont:

ORA-12801:Error signaled in Parralel Query Server P001.
ORA-00910:Specified length too long for its datatype.

Cette requête fonctionne en prod, telle quelle.

Si j'enléve le cast sur le champ SOO.NRID, la requête fonctionne également. Le champ S00 NRID est un NUMBER de 15.

Pouvez vous m'aider à résoudre ce probléme autrement qu'en modifiant la requête et en supprimant le CAST ?
D_light est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 17h25   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
la connection se fais via JDBC ou SQL*Net ?

Qu'est ce que ça donne si tu changes ta session ainsi :
Code :
ALTER session SET nls_length_semantics=byte;
Et TO_CHAR à la place de CAST ça donne quoi ?

Enfin essaye de remplacer le CAST par :
Code :
cast(NVL(SO0.nrid,0) AS VARCHAR2(15))
juste pour voir si c'est pas des valeurs NULL qui poseraient problème
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 11h16   #3
Invité régulier
 
Inscription : février 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 49
Points : 9
Points : 9
Citation:
Envoyé par orafrance Voir le message
la connection se fais via JDBC ou SQL*Net ?

Qu'est ce que ça donne si tu changes ta session ainsi :
Code :
ALTER session SET nls_length_semantics=byte;
Et TO_CHAR à la place de CAST ça donne quoi ?

Enfin essaye de remplacer le CAST par :
Code :
cast(NVL(SO0.nrid,0) AS VARCHAR2(15))
juste pour voir si c'est pas des valeurs NULL qui poseraient problème

Pour nls_length_semantics la valeur indiqué est déjà Byte.

La fonction TO_CHAR fonctionne, ce qui régle mon probléme. Je te remerci OraFrance.

Cordialement D_light.
D_light est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h05.


 
 
 
 
Partenaires

Hébergement Web