Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2476 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle-PL/SQL] erreur sur un DECLARE ?!???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle-PL/SQL] erreur sur un DECLARE ?!???

n°712085
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 29-04-2004 à 17:37:28  profilanswer
 

Je lance un script PL/SQL qui me sert à traiter des enregistrements pour faire un import, et dès le début, j'ai une erreur.
 
Voici l'erreur:
 

DECLARE
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 325


 
Je n'comprends vraiment pas pourquoi il me fait cette erreur... ce script est un script que je réutilise et qui devrait donc marcher, mais la personne est en arrêt actuellement... c'est donc fort étrange ! :'(
Voici le début de mon script:
 

---------------------------------------------------------------------------
-------                          EQUANT                      --------------
-------                          --------------
-------  Author : XXXXXXXXXXXXXXXXXXXX                       --------------
-------                                   --------------
------- Onglet MAIN ASSET         --------------
---------------------------------------------------------------------------
DECLARE
 v_code_cat char(10);
 v_code_tp char(10);
 v_code_cla integer;
 v_code_frn char(10);
 v_code_ca char(10);
 v_error  integer;
 v_des_ca varchar2(255);
 compteur  integer;
 v_code_chpar9   char(10);
 v_code_type char(10);
 v_code_status char(10);
 v_code_mode char(10);
 v_code_mon char(10);
 v_code_taux number;
 v_code_nivg1 char(10);
 v_code_nivg2 char(10);
 v_code_nivg3 char(10);
 v_code_nivh1 char(10);
 v_code_nivh2 char(10);
 v_code_nivh3 char(10);
 v_code_nivh4 char(10);
 v_code_ctr char(10);
 v_code_poste char(10);
 v_code_chpar11 char(10);
 v_code_contrat char(10);
 v_code_produit char(10);
 i integer;
 
--- select all the data in main_asset table
 
 
 CURSOR C1 is select * from MAIN_ASSET order by assetid;
 
 
BEGIN
...patati
...patata


 
Je n'comprends vraiment pas le pourquoi de cette erreur...
Je suis là pour donner plus d'infos si vous voulez...
 
Merci d'avance !

mood
Publicité
Posté le 29-04-2004 à 17:37:28  profilanswer
 

n°712116
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 29-04-2004 à 18:00:07  profilanswer
 

Ptite info supplémentaire, la base est en Oracle 8.1.7 et les 2 clients depuis lesquels j'essaie sont en 8.0.4 et en 8.1.7...

n°712532
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 30-04-2004 à 09:19:19  profilanswer
 

Si qq'un a une petite idée ce matin, je suis preneur !

n°712620
dalcap
Posté le 30-04-2004 à 10:26:00  profilanswer
 

bonjour, je ne voudrais pas m'avancer, je n'utilise pas beaucoup les procédures stockées...
mais la ligne 1, c'est après le begin, non ?
tu pourrais donner ta ligne patati STP ?

n°712655
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 30-04-2004 à 10:57:46  profilanswer
 

Pour ce qui est de la ligne 1, c'est un peu nébuleux, je n'sais pas trop en fait ce qu'il désigne par "ligne 1"
 

BEGIN
 
 delete blocnote where BN_CODE like '9999%';
 commit;
 FOR I IN C1 LOOP
 commit;
  v_code_cat :='';
  v_code_tp := '';
  v_code_cla := 0;
  v_code_frn := '';
  v_code_ca := '';
  v_des_ca := '';
  v_code_chpar9   := '';
  v_code_type := '';


 
Par contre, je peux affirmer qu'il ne fait pas le delete de ma table "blocnote"...
Merci pour ton aide...

n°712677
dalcap
Posté le 30-04-2004 à 11:16:31  profilanswer
 

peux tu commencer par faire un  

Code :
  1. select * from blocnote where BN_CODE like '9999%';


est-ce que cela te renvoit un résultat?
 
EDIT : select * from (;) merci halifax)


Message édité par dalcap le 30-04-2004 à 11:57:28
n°712694
HalifaX
Posté le 30-04-2004 à 11:42:29  profilanswer
 

dalcap a écrit :

peux tu commencer par faire un  

Code :
  1. select blocnote where BN_CODE like '9999%';


est-ce que cela te renvoit un résultat?


il fallait evidemment lire "select * from blocnote.... "
 
je viens de faire un test sur Oracle:
create table blocnote (BN_CODE NUMBER(6));
insert into blocnote values (999911);
 
select * from blocnote where BN_CODE like '9999%';
>>retourne un recordset avec notre ligne
 
delete blocnote where BN_CODE like '9999%';
>> 1 ligne supprimée
 
Regarde plutot à la ligne 325, tu dois avoir un TO_NUMBER(...)
qui lit une valeur dans la table MAIN_ASSET qui ne peut etre
convertie en chiffre...

n°712705
dalcap
Posté le 30-04-2004 à 12:05:53  profilanswer
 

ah oui, tiens, la ligne 325, je n'avais pas fait attention...
je suis resté sur "le erreur sur un declare" ligne 1...
je plussoie halifax

n°712714
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 30-04-2004 à 12:14:46  profilanswer
 

Pour le blocnote, j'ai bien des enregistrements dans la table... et j'en ai d'ailleurs créé manuellement des '9999'-like pour que je vois s'il passe par le delete ou non.
 
En ce qui concerne la ligne 325, en fait je n'arrive pas bien à comprendre de quelle ligne 325 il s'agit.
J'ai regardé dans mon SQL, mais la ligne 325 (merci ultraedit) correspond à:

update produit set chpar15=substr(trim(i.chpar15),1,30) where upper(trim(chpar2))=upper(trim(i.assetid));


 
Ma question est "comment il compte les lignes" ? est-ce qu'il faut que je vire des lignes de commentaires ?...
 
Je vais essayer de rajouter des vraies lignes de code bidon voir si ça change ou non...
Est-ce que ça pourrait venir de la ligne 325 d'un fichier de control qui est chargé préalablement ?? (un fichier avec des fonctions utilisées ensuite)
 
Est-ce que j'ai moyen d'éditer le fichier chargé dans SQL ? ou est-ce qu'il s'appuie directement sur le filesystem de windows ?

n°712767
HalifaX
Posté le 30-04-2004 à 13:52:53  profilanswer
 

BettaSplendens a écrit :

Pour le blocnote, j'ai bien des enregistrements dans la table... et j'en ai d'ailleurs créé manuellement des '9999'-like pour que je vois s'il passe par le delete ou non.
 
En ce qui concerne la ligne 325, en fait je n'arrive pas bien à comprendre de quelle ligne 325 il s'agit.
J'ai regardé dans mon SQL, mais la ligne 325 (merci ultraedit) correspond à:

update produit set chpar15=substr(trim(i.chpar15),1,30) where upper(trim(chpar2))=upper(trim(i.assetid));


 
 


Normalement, il doit t'indiquer la ligne exacte.
 
Pour etre plus clair, l'erreur ORA6502 peut apparaitre lorsque:
on assigne une valeur NULL à un champ qui ne peut pas les accepter.
Cette meme erreur peut designer une erreur survenant sur un champ  
auquel on y assigne un chiffre plus grand (ex: champ NUMBER(3) auquel
on assigne la valeur 9000).
En clair, sors la structure de la table PRODUIT puis regarde comment
est défini chpar15. c'est un champ NOT NULL non ?  
 
suffit ensuite de faire un joli
select * from main_asset where chpar15 is null;
 
Ca devrait donner la ligne qui déconne
J'espère que ca va marcher  :)  

mood
Publicité
Posté le 30-04-2004 à 13:52:53  profilanswer
 

n°712796
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 30-04-2004 à 14:30:11  profilanswer
 

Bon, je n'sais pas trop pourquoi, mais il ne doit pas commencer à 1, ou alors il commence à compter à partir de la ligne DECLARE ou qq chose dans le genre, enfin, bref c'est bizarre.
Donc après ajout de ligne à chaque "paragraphe" et en vérifiant à chaque fois s'il me décalle la ligne en erreur... j'arrive à la conclusion que c'est ici que ça merde :
 

if to_number(trim(replace(trim(i.prix),' ',''))) <> 0 then
 update produit set prix_prd=to_number(trim(replace(trim(i.prix),' ',''))) where upper(trim(chpar2))=upper(trim(i.assetid));
 commit;
end if;


Bon, au moins je sais un peu plus où chercher.
Il semble que le "to_number" ne lui plaise pas...
Et en relisant la ligne, c'est un endroit où il y a un prix, et il est bien possible qu'un point en virgule ou l'inverse fasse que ça lui plaise pas...
Je reteste et vous tiens au courant !
Merciiiiii !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle-PL/SQL] erreur sur un DECLARE ?!???

 

Sujets relatifs
tri dans une requête SQLEnrichissement via SQL d'un fichier ascii délimité
[SQL] requette avec un LIKE mais inversé[Projet de diplôme] Erreur 0x80040E14 lors d'un Update avec Access
[SQL] Mettre à jour une tablemise en forme résultat d'une requete SQL
easyphp et oracle?????D6 : erreur de vérification d'étendue : kézako ?
Récupération de compte Windows dans une base SQL ?[SQL] Comment modifier les données d'un SELECT ???
Plus de sujets relatifs à : [Oracle-PL/SQL] erreur sur un DECLARE ?!???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR