IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

[Requete SQL] erreur dépassement arithmétique


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Par défaut [Requete SQL] erreur dépassement arithmétique
    Bonjour

    Voilà ma requête qui me pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    INSERT INTO ghhss
    (Ghsnumser, Hsssec, Hssdms, Hssseuhau, Hssseubas, Hssprighs, Hssexh, Hsspriexh, Hsscoeredpos, 
    Hsscoered, Hssimpfj, Hssnatasuper1, Hssnatasuper2, Hssnatasuper3, Hssnatasuper4, Hssnatasuper5, Hsscumghs,
    Hsstypsfj1, Hsstypsfj2, Hsstypsfj3, Hsstypsfj4, Hsstypsfj5, Hsstypsfj6, Hsstypsfj7, Hsstypsfj8, Hsstypsfj9, Hsstypsfj10, 
    Hssagemin, Hssagemax, Hsssexcmp, Cmdcod, Hssdcsmco,    Hssdatami,    Hssdatjof,    Hssdatmaj) 
    VALUES('9', '1', '26.9', '067', 
           '004', '011901.64', 'O', '000331.87', 'O',
           '0.50', 'O', 'AS', 'AT', 'MA',
           '  ', '  ', 'N', 'R', 'F',
           'C', 'D', 'P', 'E', ' ', 
           ' ', ' ', ' ', '00', '00',
           '0', '01', '/', '15/02/2007', '19/02/2007', '01/03/2007')
    Voici mon erreur :
    Msg*8115, Niveau*16, État*8, Ligne*1
    Une erreur de dépassement arithmétique s'est produite lors de la conversion de varchar en type de données numeric.
    Les champs qui me posent problème sont :
    hssdms(decimal(2,1), NULL)
    hssprighs(decimal(6,2), NULL)
    hsspriexh(decimal(6,2), NULL)
    hsscoered(decimal(2,2), NULL)

    Lorsque je retire ces champs ma requête fonctionne bien.

    Merci pour votre aide
    Valoji.

    Delphi 2007
    SQLSERVER 2005 Express

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Outre votre question, votre table contient beaucoup trop de colonnes.
    Je ne connais pas votre modèle de données, mais les colonnes HssnatasuperN devraient se trouver dans une table d'annexes de structure ID|Valeur|Type.
    Même chose pour les colonnes HsstypsfjN.
    De cette façon vos recherches seraient plus consistantes.

    Pourquoi passez-vous des valeurs numériques en chaîne de caractères ?
    Cela oblige SQL Server à transtyper automatiquement toutes vos valeurs.
    En terme de performance, ce n'est pas bon.

    Ecrivez vos ordres plus clairement, par exemple :

    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
    INSERT INTO ghhss
    (
    	Ghsnumser,
    	Hsssec,
    	Hssdms,
    	Hssseuhau,
    	Hssseubas,
    	Hssprighs,
    	Hssexh,
    	Hsspriexh,
    	Hsscoeredpos,
    	Hsscoered,
    	Hssimpfj,
    	Hssnatasuper1,
    	Hssnatasuper2,
    	Hssnatasuper3,
    	Hssnatasuper4,
    	Hssnatasuper5,
    	Hsscumghs,
    	Hsstypsfj1,
    	Hsstypsfj2,
    	Hsstypsfj3,
    	Hsstypsfj4,
    	Hsstypsfj5,
    	Hsstypsfj6,
    	Hsstypsfj7,
    	Hsstypsfj8,
    	Hsstypsfj9,
    	Hsstypsfj10,
    	Hssagemin,
    	Hssagemax,
    	Hsssexcmp,
    	Cmdcod,
    	Hssdcsmco,
    	Hssdatami,
    	Hssdatjof,
    	Hssdatmaj
    ) 
    VALUES
    (
    	'9', -- Ghsnumser
    	'1', -- Hsssec
    	'26.9', -- Hssdms
    	'067', -- Hssseuhau
    	'004', -- Hssseubas
    	'011901.64', -- Hssprighs
    	'O', -- Hssprighs
    	'000331.87', -- Hssexh
    	'O', -- Hsspriexh
    	'0.50', -- Hsscoeredpos
    	'O', -- Hsscoered
    	'AS', -- Hssimpfj
    	'AT', -- Hssnatasuper1
    	'MA', -- Hssnatasuper2
    	'  ', -- Hssnatasuper3
    	'  ', -- Hssnatasuper4
    	'N', -- Hssnatasuper5
    	'R', -- Hsscumghs
    	'F', -- Hsstypsfj1
    	'C', -- Hsstypsfj2
    	'D', -- Hsstypsfj3
    	'P', -- Hsstypsfj4
    	'E', -- Hsstypsfj5
    	' ', -- Hsstypsfj6
    	' ', -- Hsstypsfj7
    	' ', -- Hsstypsfj8
    	' ', -- Hsstypsfj9
    	'00', -- Hsstypsfj10
    	'00', -- Hssagemin
    	'0', -- Hssagemax
    	'01', -- Hsssexcmp
    	'/', -- Cmdcod
    	'15/02/2007', -- Hssdcsmco
    	'19/02/2007', -- Hssdatami
    	'01/03/2007' -- Hssdatjof
    )
    Passons aux tests :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CAST('1' AS DECIMAL(2, 1)) -- hssdms => OK
    SELECT CAST('011901.64' AS DECIMAL(6,2)) -- hssprighs => vous avez prévu 4 chiffres pour la partie entière, or votre valeur en comporte 5. Passez en DECIMAL(7,2)
    SELECT CAST('000331.87' AS DECIMAL(6,2)) -- hsspriexh => OK
    SELECT CAST('0.50' AS DECIMAL(2,2)) -- hsscoered => OK
    N'auriez-vous pas capturé cet ordre avec le profiler ?

    @++

  3. #3
    Membre confirmé Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Par défaut
    Bonjour,

    Citation Envoyé par elsuket Voir le message
    Je ne connais pas votre modèle de données, mais les colonnes HssnatasuperN devraient se trouver dans une table d'annexes de structure ID|Valeur|Type.
    Même chose pour les colonnes HsstypsfjN.
    De cette façon vos recherches seraient plus consistantes.
    )[/CODE]
    Oui, je suis daccord sur le principe. Mais pour ce cas j'ai préferé procéder comme cela.


    Passons aux tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CAST('1' AS DECIMAL(2, 1)) -- hssdms => OK
    SELECT CAST('011901.64' AS DECIMAL(6,2)) -- hssprighs => vous avez prévu 4 chiffres pour la partie entière, or votre valeur en comporte 5. Passez en DECIMAL(7,2)
    SELECT CAST('000331.87' AS DECIMAL(6,2)) -- hsspriexh => OK
    SELECT CAST('0.50' AS DECIMAL(2,2)) -- hsscoered => OK
    Merci pour ces test, j'ai compris pourquoi cela ne fonctionnait pas.
    C'est un erreur de ma part (Fin de semaine), si mon champ la longueur est 3 entiers +2 décimal : je déclaré ma décimal(3,2) au lieu de decimal(5,2).

    Merci pour ton aide.
    Valoji

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Avec plaisir, et bon courage jusqu'à ce soir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb requete sql 'Erreur de syntaxe'
    Par ff441 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 09/08/2010, 13h16
  2. Réponses: 12
    Dernier message: 15/06/2010, 19h07
  3. Requete Sql erreur d'execution 3075
    Par torNAdE dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 18/07/2006, 20h55
  4. REquete sans erreur sql qui n'agit pas ........
    Par Skam dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/02/2005, 14h41
  5. Recuperer les erreurs des requetes sql en asp
    Par emile13 dans le forum ASP
    Réponses: 3
    Dernier message: 01/04/2004, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo