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

Administration SQL Server Discussion :

Agrandir un champ smallint en int


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Agrandir un champ smallint en int
    Bonjour,

    Je fais souvent des interventions chez un client pour réparer un batch SQL que j'avais repris par une collègue, je l'avais également retouché suite à une demande d'évolution, depuis, j'ai très régulièrement l'erreur de dépassement arithmétique où je multiplie 2 champs de type smallint .
    Exemple de requête qui ne fonctionne pas tout le temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    declare @DateDebut varchar(20)='31/07/2017'
    declare @DateFin varchar(20)='05/11/2017'
     
    select round(sum(qte_canard * NB_REPAS)*1.0/56181,2)
    							from LOTS_DECOUPE as LOT 
    							inner join TRACABILITE as TRAC on trac.ID_TRACABILITE=lot.ID_TRACABILITE
    							and CONVERT(date, jour_g) between CONVERT(date, @DateDebut) and CONVERT(date, @DateFin)
    							and TRAC.CODE_TRACABILITE not like '%XXX%' and LEN(TRAC.CODE_TRACABILITE)=13
    							and CODE_TRACABILITE <> '0000000000000'
    Je voulais savoir s'il y aurait des précautions à prendre pour faire passer les champs qte_canard et NB_REPAS de smallint à int, sans avoir à retoucher aux données déjà enregistrées en base.

    Merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Non, pas de précautions particulières à prendre.

    Cela dit, si le type SMALLINT est suffisant pour vos deux colonnes, vous pouvez aussi transtyper dans la requête, au moment de faire le calcul.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La solution que j'ai apporté jusqu'à maintenant était justement de transtyper chacune des colonnes à chaque fois que le message d'erreur apparaissait, tantôt je retranscris en int, tantôt en bigint, surtout que dans le pire des cas, la plage des dates peut s'étaler sur 1 année entière.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pourquoi tu n'écris pas ta requête avec un transtypage direct ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select round(sum(CAST(qte_canard as INT)* CAST(NB_REPAS as INT))*1.0/56181,2)

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'ai précisément ce que j'ai fait (à la différence que j'ai fait un CONVERT), le souci c'est que j'ai 2 bases de données qui ont exactement la même structure, exactement la même liste de procédures stockées, chaque base de données a 8 procédures stockées qui font beaucoup de calculs, d'où mon souci d'optimisation.
    Dernière modification par al1_24 ; 03/11/2017 à 15h04. Motif: Citation superflue

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok, mais c'est quoi alors ton problème en clair alors ?
    Dernière modification par al1_24 ; 03/11/2017 à 15h05. Motif: Citation superflue

Discussions similaires

  1. mapping champs de type int avec longueur
    Par elbissat dans le forum Hibernate
    Réponses: 3
    Dernier message: 27/11/2007, 10h45
  2. Agrandir un champ texte à +255
    Par Tiroy dans le forum Access
    Réponses: 3
    Dernier message: 07/02/2007, 16h08
  3. Agrandir des champs
    Par Bason_sensei dans le forum MFC
    Réponses: 1
    Dernier message: 20/10/2005, 11h47
  4. Réponses: 7
    Dernier message: 15/09/2005, 06h37
  5. Agrandir un champ avec Firebird.
    Par fplanglois dans le forum Débuter
    Réponses: 3
    Dernier message: 19/04/2005, 15h25

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