Effectivement je suis en Oracle 8.7.3
Avez-vous une solution a me proposer pour contourner se probleme ?
Effectivement je suis en Oracle 8.7.3
Avez-vous une solution a me proposer pour contourner se probleme ?
j'ai dis en 8.0 et non pas en 8.1.7.3.
dans la requette essaye d'ajouter une condiction pour ne pas prendres les valeurs NULL ou égale à BLANC
Je veux pouvoir supprimer toutes les lignes de A qui sont dans B.
B est une copie restreinte (a des lignes en moins).
Je veux donc supprimer les lignes identiques au deux tables meme si elles ont des champs null ou blanc !
C'est pourquoi je transtype, pour pouvoir tester null = null.
De plus un caractere blanc ne peux etre inserer que dans une colonne de type varchar (ou char) donc je ne ferais jamais le test: 1 in (' ') - je compare des colonnes de meme type.
Le probleme vient d'ailleurs non... mais ou est la solution :
Je te conseille de faire ce que t'a dit Sheik, récupère la requête et execute là sous sql+ tu en sauras plus.
Je l'ai fait et j'ai toujours l'erreur ORA-01722 !
J'ai oublie de vous dire que mes 2 tables sont sur des bases differentes, je fais donc un delete via un dblink :
delete from A@base_de_A where (ma_chaine_de_colonnes) in (select ma_chaine_de_colonnes from B);
au cours de mes tests j'ai remarque que la requete suivante passe :
select count(*) from A@base_de_A where (ma_chaine_de_colonnes) in (select ma_chaine_de_colonnes from B);
je ne comprends donc vraiment pas ce qui se passe avec le delete, et vous ?
un de vos NVL() sans doute.ORA-01722 invalid number
Cause: The attempted conversion of a character string to a number failed because the character string was not a valid numeric literal. Only numeric fields or character fields containing numeric data may be used in arithmetic functions or expressions. Only numeric fields may be added to or subtracted from dates.
Action: Check the character strings in the function or expression. Check that they contain only numbers, a sign, a decimal point, and the character "E" or "e" and retry the operation.
J'y avais pensé aussi mais comme DBS fait ses NVL comme :Envoyé par SheikYerboutiquel que soit le type de départ il n'y a pas de pb après le to_char. A mois que la requête soit différente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nvl(to_char(ma_col), '$$a$$b')
Laly.
Bon. nous n'allons pas y passer la semaine. Joignez donc la requête complète !
Voila c'est fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 delete from DATABS.ANIMALTRPDEF@GDDDEV where ( nvl(to_char(DATLA0), '$$_*_$$'), nvl(to_char(HMNREM), '$$_*_$$'), PRENUM, NUMGEN, nvl(to_char(NUMANI), '$$_*_$$'), nvl(to_char(CODGR2), '$$_*_$$'), nvl(to_char(PRENUMALL), '$$_*_$$'), nvl(to_char(DELDEC), '$$_*_$$'), nvl(to_char(CODSAC), '$$_*_$$'), nvl(to_char(DATDEC), '$$_*_$$'), nvl(to_char(HMNDEC), '$$_*_$$'), nvl(to_char(DATSORAUT), '$$_*_$$'), nvl(to_char(LIBDEC), '$$_*_$$'), INDADU, CPT1, DATCRE, VISACRE, nvl(to_char(NUMORD), '$$_*_$$'), nvl(to_char(NBRJOUALL), '$$_*_$$'), nvl(to_char(CODROL), '$$_*_$$'), nvl(to_char(INDRESERV), '$$_*_$$'), nvl(to_char(DATNAIMIN), '$$_*_$$'), nvl(to_char(DATNAIMAX), '$$_*_$$'), NOMANI, CODESP, CODSTE, CODSOU, nvl(to_char(NUMANIPRO), '$$_*_$$'), INDREP, INDSEL, nvl(to_char(DATREM), '$$_*_$$'), nvl(to_char(VISAREM), '$$_*_$$'), nvl(to_char(PRENUMREM), '$$_*_$$'), nvl(to_char(DATEXC), '$$_*_$$'), nvl(to_char(VISAEXC), '$$_*_$$'), nvl(to_char(LIBEXC), '$$_*_$$'), nvl(to_char(DATAC0), '$$_*_$$'), nvl(to_char(DATGE0), '$$_*_$$'), nvl(to_char(DATLA0MER), '$$_*_$$'), NUMETU, nvl(to_char(PRENUMMER), '$$_*_$$'), CODSEX, nvl(to_char(NUMPET), '$$_*_$$'), nvl(to_char(CODLOTETU), '$$_*_$$'), nvl(to_char(CODGR1), '$$_*_$$'), nvl(to_char(NUMANIMER), '$$_*_$$'), nvl(to_char(DATNAI), '$$_*_$$'), nvl(to_char(CODTYPDEC), '$$_*_$$')) in (select nvl(to_char(DATLA0), '$$_*_$$'), nvl(to_char(HMNREM), '$$_*_$$'), PRENUM, NUMGEN, nvl(to_char(NUMANI), '$$_*_$$'), nvl(to_char(CODGR2), '$$_*_$$'), nvl(to_char(PRENUMALL), '$$_*_$$'), nvl(to_char(DELDEC), '$$_*_$$'), nvl(to_char(CODSAC), '$$_*_$$'), nvl(to_char(DATDEC), '$$_*_$$'), nvl(to_char(HMNDEC), '$$_*_$$'), nvl(to_char(DATSORAUT), '$$_*_$$'), nvl(to_char(LIBDEC), '$$_*_$$'), INDADU, CPT1, DATCRE, VISACRE, nvl(to_char(NUMORD), '$$_*_$$'), nvl(to_char(NBRJOUALL), '$$_*_$$'), nvl(to_char(CODROL), '$$_*_$$'), nvl(to_char(INDRESERV), '$$_*_$$'), nvl(to_char(DATNAIMIN), '$$_*_$$'), nvl(to_char(DATNAIMAX), '$$_*_$$'), NOMANI, CODESP, CODSTE, CODSOU, nvl(to_char(NUMANIPRO), '$$_*_$$'), INDREP, INDSEL, nvl(to_char(DATREM), '$$_*_$$'), nvl(to_char(VISAREM), '$$_*_$$'), nvl(to_char(PRENUMREM), '$$_*_$$'), nvl(to_char(DATEXC), '$$_*_$$'), nvl(to_char(VISAEXC), '$$_*_$$'), nvl(to_char(LIBEXC), '$$_*_$$'), nvl(to_char(DATAC0), '$$_*_$$'), nvl(to_char(DATGE0), '$$_*_$$'), nvl(to_char(DATLA0MER), '$$_*_$$'), NUMETU, nvl(to_char(PRENUMMER), '$$_*_$$'), CODSEX, nvl(to_char(NUMPET), '$$_*_$$'), nvl(to_char(CODLOTETU), '$$_*_$$'), nvl(to_char(CODGR1), '$$_*_$$'), nvl(to_char(NUMANIMER), '$$_*_$$'), nvl(to_char(DATNAI), '$$_*_$$'), nvl(to_char(CODTYPDEC), '$$_*_$$') from SPTARC_ORA_63994)
Aucune différence !
Et que donnes l'exécution de cette requête sans execute immediate directement sous SQL*Plus ?
Laly.
SQL+ me renvoie l'erreur suivante :
ERREUR à la ligne 1 :
ORA-01722: Nombre invalide
ORA-02063: précédant line de GDDDEV
Et si tu fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 delete from DATABS.ANIMALTRPDEF@GDDDEV where ( nvl(to_char(DATLA0), '$$_*_$$'), nvl(to_char(HMNREM), '$$_*_$$'), nvl(to_char(NUMANI), '$$_*_$$'), nvl(to_char(CODGR2), '$$_*_$$'), nvl(to_char(PRENUMALL), '$$_*_$$'), nvl(to_char(DELDEC), '$$_*_$$'), nvl(to_char(CODSAC), '$$_*_$$'), nvl(to_char(DATDEC), '$$_*_$$'), nvl(to_char(HMNDEC), '$$_*_$$'), nvl(to_char(DATSORAUT), '$$_*_$$'), nvl(to_char(LIBDEC), '$$_*_$$'), nvl(to_char(NUMORD), '$$_*_$$'), nvl(to_char(NBRJOUALL), '$$_*_$$'), nvl(to_char(CODROL), '$$_*_$$'), nvl(to_char(INDRESERV), '$$_*_$$'), nvl(to_char(DATNAIMIN), '$$_*_$$'), nvl(to_char(DATNAIMAX), '$$_*_$$'), nvl(to_char(NUMANIPRO), '$$_*_$$'), nvl(to_char(DATREM), '$$_*_$$'), nvl(to_char(VISAREM), '$$_*_$$'), nvl(to_char(PRENUMREM), '$$_*_$$'), nvl(to_char(DATEXC), '$$_*_$$'), nvl(to_char(VISAEXC), '$$_*_$$'), nvl(to_char(LIBEXC), '$$_*_$$'), nvl(to_char(DATAC0), '$$_*_$$'), nvl(to_char(DATGE0), '$$_*_$$'), nvl(to_char(DATLA0MER), '$$_*_$$'), nvl(to_char(PRENUMMER), '$$_*_$$'), nvl(to_char(NUMPET), '$$_*_$$'), nvl(to_char(CODLOTETU), '$$_*_$$'), nvl(to_char(CODGR1), '$$_*_$$'), nvl(to_char(NUMANIMER), '$$_*_$$'), nvl(to_char(DATNAI), '$$_*_$$'), nvl(to_char(CODTYPDEC), '$$_*_$$')) in (select nvl(to_char(DATLA0), '$$_*_$$'), nvl(to_char(HMNREM), '$$_*_$$'), nvl(to_char(NUMANI), '$$_*_$$'), nvl(to_char(CODGR2), '$$_*_$$'), nvl(to_char(PRENUMALL), '$$_*_$$'), nvl(to_char(DELDEC), '$$_*_$$'), nvl(to_char(CODSAC), '$$_*_$$'), nvl(to_char(DATDEC), '$$_*_$$'), nvl(to_char(HMNDEC), '$$_*_$$'), nvl(to_char(DATSORAUT), '$$_*_$$'), nvl(to_char(LIBDEC), '$$_*_$$'), nvl(to_char(NUMORD), '$$_*_$$'), nvl(to_char(NBRJOUALL), '$$_*_$$'), nvl(to_char(CODROL), '$$_*_$$'), nvl(to_char(INDRESERV), '$$_*_$$'), nvl(to_char(DATNAIMIN), '$$_*_$$'), nvl(to_char(DATNAIMAX), '$$_*_$$'), nvl(to_char(NUMANIPRO), '$$_*_$$'), nvl(to_char(DATREM), '$$_*_$$'), nvl(to_char(VISAREM), '$$_*_$$'), nvl(to_char(PRENUMREM), '$$_*_$$'), nvl(to_char(DATEXC), '$$_*_$$'), nvl(to_char(VISAEXC), '$$_*_$$'), nvl(to_char(LIBEXC), '$$_*_$$'), nvl(to_char(DATAC0), '$$_*_$$'), nvl(to_char(DATGE0), '$$_*_$$'), nvl(to_char(DATLA0MER), '$$_*_$$'), nvl(to_char(PRENUMMER), '$$_*_$$'), nvl(to_char(NUMPET), '$$_*_$$'), nvl(to_char(CODLOTETU), '$$_*_$$'), nvl(to_char(CODGR1), '$$_*_$$'), nvl(to_char(NUMANIMER), '$$_*_$$'), nvl(to_char(DATNAI), '$$_*_$$'), nvl(to_char(CODTYPDEC), '$$_*_$$') from SPTARC_ORA_63994)
Laly.
J'ai exactement la meme erreur...
Ce que tu peux essayer de faire c'est de mettre en commentaire une à une les colonnes pour voir celle qui pose problème.
c'est ce que je suis entrain de faire et je ne trouve rien de logique...
: Peux tu être plus précis ?Envoyé par DBS
Peut-être que la syntaxe WHERE( a1,a2,..,an ) IN ( b1, b2,..,bn ) a des limitations en taille.
si tu fait :
EDIT: enleve tous les nvl()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SQL> select 1 from dual where nvl(to_char('TO'),'$$_*_$$') in (1); select 1 from dual where nvl(to_char('TO'),'$$_*_$$') in (1) * ERREUR Ó la ligne 1 : ORA-01722: invalid number
Oui, mais
fonctionne, et il a des NVL partout...
Code : Sélectionner tout - Visualiser dans une fenêtre à part select 1 from dual where nvl(to_char('TO'),'$$_*_$$') in (nvl(to_char('TO'),'$$_*_$$'));
Les deux tables se trouvent dans une même base ou des bases differentes ?
si des bases differentes vérifier le formant des nombres réels (en '.' ou ',' ) ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager