我试图从存储过程中获取字符串返回值,但我得到null。存储过程运行正常并返回预期的字符串(我使用SQL Server Profiler检查结果)但我的代码中出现空字符串。
public static string GetStringValue(string pCode)
{
String strConnString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
SqlCommand cmd = new SqlCommand();
string returnValue = "";
cmd.CommandText = "usp_GetStringValue";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = new SqlConnection(strConnString);
cmd.Parameters.AddWithValue("@pcode", pCode);
//cmd.Parameters.AddWithValue("@Result", "");
SqlParameter sqlParam = new SqlParameter("@Result", "");
cmd.Parameters.Add(sqlParam);
sqlParam.Direction = ParameterDirection.Output;
cmd.Connection.Open();
cmd.ExecuteScalar();
//cmd.ExecuteNonQuery();
returnValue = Convert.ToString(cmd.Parameters["@Result"].Value);
cmd.Connection.Close();
return returnValue;
}
这是我的存储过程
ALTER PROCEDURE [dbo].[usp_GetStringValue]
@pcode Varchar (4),
@Result varchar(5000) OUTPUT
AS
BEGIN
SET @Result=(Select pPath from mytable where pcode = @pcode)
print @Result
END
答案 0 :(得分:0)
在添加任何其他参数之前尝试添加@Result,因为它是一个Output参数。重新排列下面列出的代码。它过去对我有用。我可能会因此受到抨击,但现在是星期五。
SqlParameter sqlParam = new SqlParameter("@Result", "");
cmd.Parameters.Add(sqlParam);
sqlParam.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.AddWithValue("@pcode", pCode);