Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur 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 20/09/2007, 00h38   #1
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
Par défaut ERREUR oracle ORA-00997

bonjour,
j'ai utilisée une requete select pour selectionnée des données en utilisant un lien db link
le message suivant apparait
ORA-00997: Utilisation interdite du type de données LONG

voilà la requete:
SELECT porder_.po_ref, supplier_ext.supl_cd,
(CASE
WHEN po_dt IS NULL
THEN NULL
WHEN po_dt = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (po_dt, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
),
CHR (po_status), po_curr_cd, 'supervisor',
(CASE
WHEN dt_porder IS NULL
THEN NULL
WHEN dt_porder = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (dt_porder, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
),
po_authority, po_cc, po_account, po_payment_due,
(CASE
WHEN po_dt IS NULL
THEN NULL
WHEN po_dt = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (po_dt, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
)
-- IIf([PO_DT] IS NULL,"",IIf([PO_DT]=0,"",DateSerial(YEAR([PO_DT]),MONTH([PO_DT]),DAY(([PO_DT])+1)))) AS pour_le
FROM cw4ora.porder_@fuba INNER JOIN cw4ora.supplier_ext@fuba
ON s_supl_po = pk_supplier_
;

j'ai simulé le probleme:
quand j'élimine les champs de type date:
(CASE
WHEN po_dt IS NULL
THEN NULL
WHEN po_dt = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (po_dt, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
)
le message diparait, je peut selectionné que les champs de type texte ou numérique!
il y a il une solution radicale pour ce probelme et merci d'avance
bekir.mohamed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 11h29   #2
Membre actif
 
Avatar de Loyd1974
 
Inscription : août 2007
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 176
Points : 172
Points : 172
désolé mais comme ça c'est illisible
Loyd1974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 15h35   #3
Membre expérimenté

 
Avatar de plabrevo
 
Inscription : décembre 2005
Messages : 541
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 541
Points : 598
Points : 598
L'un des raisons est probablement referencee dans la note SQL*Plus Top 20 Issues
plabrevo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 13h29   #4
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
bonjour,
j'ai utilisée une requete select pour selectionnée des données en utilisant un lien db link
le message suivant apparait
ORA-00997: Utilisation interdite du type de données LONG

voilà la requete:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
SELECT porder_.po_ref, supplier_ext.supl_cd,
(CASE
WHEN po_dt IS NULL
THEN NULL
WHEN po_dt = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (po_dt, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
),
CHR (po_status), po_curr_cd, 'supervisor',
(CASE
WHEN dt_porder IS NULL
THEN NULL
WHEN dt_porder = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (dt_porder, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
),
po_authority, po_cc, po_account, po_payment_due,
(CASE
WHEN po_dt IS NULL
THEN NULL
WHEN po_dt = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (po_dt, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
)
-- IIf([PO_DT] IS NULL,"",IIf([PO_DT]=0,"",DateSerial(YEAR([PO_DT]),MONTH([PO_DT]),DAY(([PO_DT])+1)))) AS pour_le
FROM cw4ora.porder_@fuba INNER JOIN cw4ora.supplier_ext@fuba
ON s_supl_po = pk_supplier_
;
j'ai simulé le probleme:
quand j'élimine les champs de type date:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
(CASE
WHEN po_dt IS NULL
THEN NULL
WHEN po_dt = 0
THEN NULL
ELSE (TO_CHAR (( TO_DATE ('01-01-1900', 'DD-MM-YYYY')
+ NVL (po_dt, 0)
- 1
),
'DD/MM/YYYY'
)
)
END
)
le message diparait, je peut selectionné que les champs de type texte ou numérique!
il y a il une solution radicale pour ce probelme et merci d'avance
bekir.mohamed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 16h37   #5
Membre actif
 
Avatar de Loyd1974
 
Inscription : août 2007
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 176
Points : 172
Points : 172
A tout hasard, j'avais déjà eu une requête similaire qui m'avait posé problème, mais je ne me rappelle pas si c'était le même message d'erreur.
On avait en fait des CASE WHEN et des vues où la première version du champ était NULL.
On avait résolu cela en faisant TO_DATE(NULL) et TO_NUMBER(NULL) suivant les cas.
Je sais pas si c'est vraiment cela ton problème, mais ca ne coûte rien d'essayer
Loyd1974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2007, 09h06   #6
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
merci mais j'ai trouvé la solution, j'ai fait ca a partie de l'autre base de données:
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
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
 
INSERT INTO COSWIN.t_order_@COS7
            (popo_code, popo_supplier, popo_date, popo_status, popo_currency,
             popo_creator, popo_creation_date, popo_entity, popo_costcentre,
             popo_account, popo_payment_due, popo_expected_date)
   SELECT PORDER_.po_ref, supplier_ext.supl_cd,
          (CASE
              WHEN po_dt IS NULL
                 THEN NULL
              WHEN po_dt = 0
                 THEN NULL
              ELSE (TO_CHAR ((  TO_DATE ('01-01-1900', 'DD-MM-YYYY')
                              + NVL (po_dt, 0)
                              - 1
                             ),
                             'DD/MM/YYYY'
                            )
                   )
           END
          ),
          CHR (po_status), po_curr_cd, 'supervisor',
          (CASE
              WHEN dt_porder IS NULL
                 THEN NULL
              WHEN dt_porder = 0
                 THEN NULL
              ELSE (TO_CHAR ((  TO_DATE ('01-01-1900', 'DD-MM-YYYY')
                              + NVL (dt_porder, 0)
                              - 1
                             ),
                             'DD/MM/YYYY'
                            )
                   )
           END
          ),
          (CASE
		  WHEN po_authority IS NULL
		  THEN (SELECT VALUE FROM PARAMETERS WHERE code='COMP_ENT_DEFAULT')
		  ELSE po_authority
		  END 
		  )
		  , po_cc, po_account, po_payment_due,
          (CASE
              WHEN po_dt IS NULL
                 THEN NULL
              WHEN po_dt = 0
                 THEN NULL
              ELSE (TO_CHAR ((  TO_DATE ('01-01-1900', 'DD-MM-YYYY')
                              + NVL (po_dt, 0)
                              - 1
                             ),
                             'DD/MM/YYYY'
                            )
                   )
           END
          )
     FROM PORDER_ INNER JOIN supplier_ext ON s_supl_po = pk_supplier_
          ;
COMMIT;
bekir.mohamed 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 15h06.


 
 
 
 
Partenaires

Hébergement Web