C# sql中不返回值的存储过程

C# sql中不返回值的存储过程,c#,asp.net,sql,sql-server,ado.net,C#,Asp.net,Sql,Sql Server,Ado.net,我的函数没有返回任何内容-strReturn为空: try { SqlParameter[] parameter = new SqlParameter[] { new SqlParameter("@MerchantID", MercahntID), new SqlParameter("@LoactionID", LoactionID)

我的函数没有返回任何内容-strReturn为空:

        try
        {
            SqlParameter[] parameter = new SqlParameter[]
            {
                new SqlParameter("@MerchantID", MercahntID),
                new SqlParameter("@LoactionID", LoactionID)
            };

            SqlHelper.ExecuteNonQuery(DbConnString, System.Data.CommandType.StoredProcedure, "GetMerchantLocationZip", parameter);

            return strReturn;
        }
        catch (Exception ex)
        {
            LogError("Error Occurred When Retrieving Mercahnt Location Zip: MercahntID:" + MercahntID.ToString(), ex);
            return strReturn;
        }
    }
当我使用“exec GetMerchantLocationZip(3333373773)”执行这个存储过程时,我在SQL中得到了正确的zipcode。为什么我不在Visual Studio中获取它

Create PROCEDURE [dbo].[GetMerchantLocationZip](
@MerchantID bigint,
@LoactionID bigint)

AS 

Begin

Select Zip FROM Merchant_Location 
where MerchantID=@MerchantID AND LocationID =@LoactionID

End

我正在学习,如果这是一个明显的错误,请道歉。谢谢大家

您似乎没有向任何地方分配任何内容。您还需要使用
ExecuteScalar
从单行、单列结果集中检索值

strReturn = SqlHelper.ExecuteScalar(...) as string;

或者带有
ExecuteNonQuery
OUTPUT
参数,因为您没有将代码作为查询执行,所以无法获得结果

您正在调用不返回任何结果的
SqlHelper.ExecuteNonQuery()

看起来您正在使用SqlHelper应用程序块,因此我认为您需要的代码应该是(如果您在查询中返回多行):

ds
将包含查询结果

如果您试图从数据库中检索单个值,而不是一组行,那么您的代码将是:

object zip = SqlHelper.ExecuteScalar(DbConnString,
                                     CommandType.StoredProcedure,
                                     "GetMerchantLocationZip",
                                     parameter);

您正在调用ExecuteOnQuery,它只返回受影响的行数。试试这个:

var zipCode = SqlHelper.ExecuteScalar(DbConnString, System.Data.CommandType.StoredProcedure, "GetMerchantLocationZip", parameter);

检查你的拼写您可能在SQL语句中抛出了一个异常,因为您在某个地方(或许多地方)拼错了“Merchant”或“Location”

而且,正如其他人所指出的,您可能希望:

return SqlHelper.ExecuteScalar(DbConnString, 
    System.Data.CommandType.StoredProcedure, 
    "GetMerchantLocationZip", parameter);

您使用的ExecuteOnQuery不会返回结果,它只会返回更新的行数。您想执行一个读卡器。

streturn
未设置,您需要调用
ExecuteScalar
而不是
ExecuteNonQuery

您可能想调用
ExecuteScalar
而不是ExecuteNonQuery,因为预期不会返回

也许下面的代码

 var zipObject = SqlHelper.ExecuteScalar(DbConnString, System.Data.CommandType.StoredProcedure, "GetMerchantLocationZip", parameter);

 return (string)zipObject;

了不起的家伙!谢谢大家的帮助!:)
 var zipObject = SqlHelper.ExecuteScalar(DbConnString, System.Data.CommandType.StoredProcedure, "GetMerchantLocationZip", parameter);

 return (string)zipObject;