C# sql中不返回值的存储过程
我的函数没有返回任何内容-strReturn为空: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)
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;