Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
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 22/03/2006, 18h07   #1
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 2
Points : 2
Par défaut [ASE][T-SQL]Message d'erreur pendant INSERT

C'est encore le débutant en SYBASE

J'ai le message d'erreur suivant


Server Message: Number 3606, Severity 10
Server 'DWH', Line 1:
Arithmetic overflow occurred.




Quand je lance la requête 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
 
INSERT INTO #MKT_EFFEC_PREC
	SELECT 
		A.CLI_ORIGINE,
	    	A.ANNEE,
   		A.MOIS,
		A.PSU_CODE,
		A.FTP_CODE,
		0,
		0,
		sum(B.FAC_CA),
		0,
		0,
		sum(B.FAC_VOL)
	FROM 
		#MKT_EFFEC_PREC A, #MKT_EFFEC_PREC B
	WHERE 
		A.CLI_ORIGINE=B.CLI_ORIGINE
		AND A.ANNEE=B.ANNEE
		AND A.PSU_CODE=B.PSU_CODE
		AND A.FTP_CODE=B.FTP_CODE
		AND B.MOIS<=A.MOIS
	GROUP BY A.CLI_ORIGINE, A.ANNEE, A.MOIS,A.PSU_CODE,A.FTP_CODE
que signifie ce message d'erreur et quel est le remède ?

Merci

Edit :

Pour info avant l'insert, je lance la commande 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
 
CREATE TABLE #MKT_EFFEC_PREC
	(
		CLI_ORIGINE		varchar(6),
	    	ANNEE			int,
	   	MOIS			int,
		PSU_CODE		char(4),
		FTP_CODE		char(4),
		FAC_CA			money,
		FAC_CA_PREC		money,
		FAC_CA_CUMULE		money,
		FAC_VOL			numeric(30,2),	
		FAC_VOL_PREC		numeric(30,2),
		FAC_VOL_CUMULE		numeric(30,2)
	)
 
	INSERT INTO #MKT_EFFEC_PREC
	SELECT 'MDP',ANNEE,MOIS,PSU_CODE,FTP_CODE,sum(FAC_CA),sum(FAC_CA_PREC),0,sum(FAC_VOL),sum(FAC_VOL_PREC),0 FROM #LISTE_CLIENTS where CLI_ORIGINE='M'
	GROUP BY PSU_CODE,ANNEE,MOIS,FTP_CODE,FTP_CODE,CLI_ORIGINE
 
 
	INSERT INTO #MKT_EFFEC_PREC
	SELECT 'LP',ANNEE,MOIS,PSU_CODE,FTP_CODE,sum(FAC_CA),sum(FAC_CA_PREC),0,sum(FAC_VOL),sum(FAC_VOL_PREC),0 FROM #LISTE_CLIENTS where CLI_ORIGINE='P'
	GROUP BY PSU_CODE,ANNEE,MOIS,FTP_CODE,CLI_ORIGINE
 
 
	INSERT INTO #MKT_EFFEC_PREC
	SELECT 'Groupe',ANNEE,MOIS,PSU_CODE,FTP_CODE,sum(FAC_CA),sum(FAC_CA_PREC),0,sum(FAC_VOL),sum(FAC_VOL_PREC),0 FROM #LISTE_CLIENTS where CLI_ORIGINE in ('P','M','N')
	GROUP BY PSU_CODE,ANNEE,MOIS,PSU_CODE,CLI_ORIGINE
Benjamin78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 09h47   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
A priori ce message veux dire que le code essaie d'insérer une valeur numerique dans une colonne qui est trop petite.

Le problème vient certainement des deux fonctions sum(), bien que la taille des colonnes (numeric(30,2)) semble bien assez grandes. Il faudrait analyser les inserts initiaux - je suspecte qu'il y ai un ou plusieurs produits cartésiens, et que les valeurs que vous voullez sommer sont déjà très grandes (et fausses!)

Je vous suggère de faire un select de la table en question pour voir ce qui a été inséré par vos commandes initiales.

Michael
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 10h19   #3
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 2
Points : 2
J'ai exécuté uniquement le select sans l'ordre INSERT et cela me retourne le meme message d'erreur.

Donc le problème ne vient pas de l'insertion.

De plus j'ai vérifié ma table initiale et meme en sommant toutes les valeurs on ne dépassera jamais une valeur dépassant les 30 chiffres.
Benjamin78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 10h38   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Code :
1
2
 
SELECT convert(float, sum(...)) FROM ...
pour voir quelle valeurs sont réellements générées.

Michael
mpeppler 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 20h29.


 
 
 
 
Partenaires

Hébergement Web