Partage
  • Partager sur Facebook
  • Partager sur Twitter

[T-SQL]Une erreur de dépassement arithmétique s'est produite

[TSQL][SQLSERVER][Procedure stockée]

    12 juin 2010 à 13:42:54

    bonjour ,
    je travaille avec les procédures stockée sur SQL server 2008 , mais quand je veux executer l'une de mes procedure ,il m'affiche l'erreur suivant :

    Une erreur de dépassement arithmétique s'est produite lors de la conversion de expression en type de données int.

    USE [Entreprise]
    GO
    /****** Object:  StoredProcedure [dbo].[Cos_phi_calculé]    Script Date: 06/12/2010 11:21:50 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER procedure [dbo].[Cos_phi_calculé]
    as 
    select dbo.CosPhi_calcule(consomm_HC,consomm_HP,consomm_HN,consomm_energie_reactive)
    from dbo.Facture



    En effet j'ai une fonction qui s'appelle [dbo].[CosPhi_calcule] qui retourne une valeur de type float ,quand je veux le récupérer avec ma procédure stockée [dbo].[Cos_phi_calculé] il m'afficher l'erreur précédemment présenté.

    ALTER FUNCTION [dbo].[CosPhi_calcule] 
    (
            @consomm_HC int,
            @consomm_HP int,
            @consomm_HN int,
            @consoER int
    )
    RETURNS float
    AS
    BEGIN
    declare @resultat float
                            
            set @resultat=(@consomm_HC+@consomm_HP+@consomm_HN)/(SQRT(((@consomm_HC+@consomm_HP+@consomm_HN)*(@consomm_HC+@consomm_HP+@consomm_HN)) + (@consoER * @consoER)))
    return @resultat
    END


    dans les paramètre de ma procédure je trouve ca:
    <image>http://www.easy-upload.net/fichier.php?fichier=2010612123640</image>

    comme vous voyer ma procédure retourne toujours une valeur de type Integer ,et je pense que c'est la seul raison pour la quelle elle m'affiche le message de dépassement .

    alors j'ai modifier le type de retour de ma fonction et j'ai mis Int au lieu de float pour que ma procédure puisse capturer la valeur de la fonction mais malheureusement en vain, elle m'affiche la même erreur.

    j'ai aussi ce code la ,

    USE [Entreprise]
    GO
    
    [B]DECLARE        @return_value int[/B]
    
    EXEC        @return_value = [dbo].[Cos_phi_calculé]
    
    SELECT        'Return Value' = @return_value
    
    GO


    la aussi j'ai remplacer Int par float pour remédier au problème de conversion mais en vain

    Alors est ce qu'il y a un moyen pour modifier le type de retour de ma procédure ,le rendre float au lieu de int ,parce que INT est donné par default par SQL server

    j'espère que j'ai bien expliqué mon problème et vos remarque seront les bienvenus

    Merci d'avance :)


    • Partager sur Facebook
    • Partager sur Twitter

    [T-SQL]Une erreur de dépassement arithmétique s'est produite

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown