如何从程序SQL Server 2005中的C#返回值(how to get return valu

2019-10-28 20:44发布

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 

在上面的存储过程,我可以把这个值设为“0”发送到@strFailedEMPID然后我的程序。 然而,当我从我的程序返回的值,然后以相同的变量@strFailedEMPID我送价值这样:

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

任何人都可以用正确的语法有助于获得从过程的返回值?

Answer 1:

这是因为你是决定性的.NET的参数作为实际上等同于场景中使用存储过程中RETURN返回一个整数(你不这样做)一个返回值。

相反,你需要给你的.NET代码中定义的@strFailedEMPID参数作为ParameterDirection.Output。 如果你想在一个值传递和接收一个穿出参数,使用ParameterDirection.InputOutput。

执行存储过程后,你再只是:

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

所以....

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;


文章来源: how to get return value from procedure sql server 2005 to c#