2014-09-12 2 views
3

J'ai écrit une procédure stockée dans SQL Server qui renvoie une valeur BigintRetour bigint de SQL Server procédure stockée

alter procedure [dbo].adding 
    @one bigint, 
    @two bigint, 
    @startid bigint output 
as 
begin 
    set @startid = @one + @two 

    return @startid  
end 

Mais alors que la valeur de retour, je reçois une exception

Erreur de dépassement arithmétique conversion de l'expression en type de données int

Est-ce que quelqu'un peut m'aider à résoudre ce problème?

Merci à l'avance

Remarque: Au-dessus de la requête est pas exactement la même procédure que j'utilise

mise à jour:

J'ai un code comme ci-dessous

_lookupId = cmdInsert.Parameters.Add("RetVal", SqlDbType.BigInt); 
         _lookupId.Direction = ParameterDirection.ReturnValue; 

         _procIn01 = cmdInsert.Parameters.Add("@idCount", SqlDbType.VarChar, 500); 
         cmdInsert.Parameters["@idCount"].Value = idCount; 
         _procIn01.Direction = ParameterDirection.Input; 

         _procIn02 = cmdInsert.Parameters.Add("@requestFrom", SqlDbType.VarChar, 100); 
         cmdInsert.Parameters["@requestFrom"].Value = clientId; 
         _procIn02.Direction = ParameterDirection.Input; 

         _pramOut = cmdInsert.Parameters.Add("@startID", SqlDbType.BigInt); 
         _pramOut.Direction = ParameterDirection.Output; 
         cmdInsert.ExecuteScalar(); 

Sans renvoyer la valeur, comment puis-je affecter t il vaut "RetVal" ma variable _lookup.

+0

Les procédures retournent l'état. Les fonctions renvoient des valeurs. –

+0

Vous n'avez pas vraiment à retourner votre var de sortie, juste le réglage devrait être suffisant pour que la sortie soit remplie pour votre application – Kritner

Répondre

6

Les procédures renvoient une valeur d'état, qui est toujours un nombre entier. Vous pouvez retourner la valeur de la procédure stockée juste en le définissant:

alter procedure [dbo].adding 
    -- add the parameters for the stored procedure here 
    @one bigint, 
    @two bigint, 
    @startid bigint output 
as 
begin 
    -- set nocount on added to prevent extra result sets from 
    -- interfering with select statements. 

    set @startid = @one + @two  
end; 

Utilisez return pour savoir si oui ou non la procédure stockée réussit.

On pourrait appeler cela avec quelque chose comme:

declare @startid bigint; 

exec dbo.adding(1, 2, @startid output); 

select @startid; 
+0

J'ai mis à jour le poste pouvez-vous m'aider plz – Backtrack

+0

@ Backack. . . Voici un exemple de comment écrire le code en C#: http://stackoverflow.com/questions/10905782/using-stored-procedure-output-parameters-in-c-sharp. –

+0

Got it thanks :) – Backtrack

1

Sotred procédure réponse réponse est un nombre entier qui montre sp réussie ou non
vous ne pouvez pas l'utiliser pour obtenir un numéro big int si vous souhaitez obtenir une valeur de sortie avec des out put parameter, vous pouvez utiliser sélectionner avec la variable, par exemple,
appeler

Select @[email protected] 

maintenant pour la sortie get en utilisant Execute Scalar méthode de commande.