我想從存儲過程中獲取字符串返回值,但我得到空值。存儲過程運行正常,並返回預期的字符串(我使用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
來自MSDN:*對於UPDATE,INSERT和DELETE語句,返回值是受命令影響的行數。當插入或更新的表上存在觸發器時,返回值包括受插入或更新操作以及觸發器或觸發器影響的行數影響的行數。對於所有其他類型的語句,返回值爲-1。如果發生回滾,返回值也是-1 *看看這可能會幫助你:http://stackoverflow.com/a/32736842/2946329 –
什麼是你返回的變量類型,如果它是輸出比使用ParameterDirection 。輸出 – rashfmnb
'cmd.Parameters [「@ Result」]。Value的值是什麼? – Alex