开发者

how to get return value from procedure sql server 2005 to c#

开发者 https://www.devze.com 2023-02-16 13:27 出处:网络
CREATE PROCEDURE [dbo].[Code] @intEpmNameNUMERIC, @strFailedEMPID VARCHAR(1000) output AS DECLARE @FailedCodes VARCHAR(1000)
CREATE PROCEDURE [dbo].[Code]           
@intEpmName  NUMERIC,            
@strFailedEMPID VARCHAR(1000) output       
AS  

DECLARE    
@FailedCodes VARCHAR(1000)
BEGIN 
----
my  logic where  i need  return the value
SET @strFailedEMPID = @FailedCodes  
----- 
END 

In the stored procedure above, I can send the value as "0" to @strFailedEMPID then to my procedure. However, when I return the value from my procedure, then to the same variable @strFailedEMPI开发者_运维知识库D I am sending the value as such:

lsqlParam = new SqlParameter("@strFailedEMPID ", SqlDbType.VarChar);
lsqlParam.Value = "0";
lsqlParam.Direction = ParameterDirection.ReturnValue;
lsqlCmd.Parameters.Add(lsqlParam);

Can anyone help with the correct syntax to get the return value from the procedure?


It's because you are defining the parameter in .NET as a ReturnValue which would actually equate to the scenario where you use RETURN within the stored procedure to return an integer (which you're not doing).

Instead, you need to define the @strFailedEMPID parameter as ParameterDirection.Output within your .NET code. If you want to pass a value in AND receive one out through the parameter, use ParameterDirection.InputOutput.

After executing the sproc, you then just:

string value = lsqlCmd.Parameters["@strFailedEMPID"].value;

So....

lsqlParam = new SqlParameter("@strFailedEMPID ", SqlDbType.VarChar);
lsqlParam.Value = "0";
lsqlParam.Direction = ParameterDirection.InputOutput;
lsqlCmd.Parameters.Add(lsqlParam);

lsqlCmd.ExecuteNonQuery();
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;
0

精彩评论

暂无评论...
验证码 换一张
取 消