这是我的存储过程,该查询返回三列一个表,每列内的总量。存储过程Basic帮助获得总计返回从表
单价,税务的OrderTotal
ALTER PROCEDURE [dbo].[sp_TaxOrderReport]
-- Add the parameters for the stored procedure here
@StartDate date,
@EndDate date,
@TaxReturnValue int,
@TotalReturnValue int,
@UnitReturnValue int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT Sum(oi.UnitPrice) as UnitPrice, Sum(oi.Tax) as Tax,
Sum(oi.TotalAmount) as OrderTotal
FROM OrderItems oi, Orders o
where @StartDate <= o.OrderDate and O.OrderDate <= @EndDate
and o.OrderId = oi.OrderId
select @TaxReturnValue as Tax
select @UnitReturnValue as UnitPrice
select @TotalReturnValue as OrderTotal
-- How can I return several values over??
return @TaxReturnValue
END
我的目标是有一个管理员输入的日期,对他产生的税前得到回来报告总营业税和金钱。这是我的方法在我的控制器中的样子。
public ActionResult GetTaxReport(string StartDate, string EndDate)
{
string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand("sp_TaxOrderReport", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = StartDate;
cmd.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = EndDate;
cmd.Parameters.Add("@TaxReturnValue", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@UnitReturnValue", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@TotalReturnValue", SqlDbType.Int).Value = 0;
cmd.ExecuteNonQuery();
var returnvalue = cmd.Parameters["@TaxReturnValue"].Value.ToString();
}
connection.Close();
}
return View("FindUser");
}
的@TaxReturnValue不获取设置为从列中的值,我似乎无法找到设置,这三个这些变量,然后返回他们所有,所以我可以在我看来,使它们的方式。如果有人有任何提示,我将不胜感激。
-----UPDATE--------------
以为我会更新包含以防万一有人需要关于如何返回,并设置在传递给存储过程变量的一个非常明确的答案回答问题。
存储过程:
ALTER PROCEDURE [dbo].[sp_TaxOrderReport]
-- Add the parameters for the stored procedure here
@StartDate date,
@EndDate date,
@TaxReturnValue int OUTPUT,
@TotalRevenue int OUTPUT,
@UnitReturnValue int OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
--Insert statements for procedure here
SELECT
@TaxReturnValue = Sum(oi.Tax),
@UnitReturnValue = Sum(oi.UnitPrice),
@TotalRevenue = Sum(oi.TotalAmount)
FROM OrderItems oi, Orders o
where @StartDate <= o.OrderDate and O.OrderDate <= @EndDate
and o.OrderId = oi.OrderId
END
C#代码:
string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand("sp_TaxOrderReport", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = StartDate;
cmd.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = EndDate;
cmd.Parameters.Add("@TaxReturnValue", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@UnitReturnValue", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@TotalRevenue", SqlDbType.Int).Value = 0;
cmd.Parameters["@TaxReturnValue"].Direction = ParameterDirection.Output;
cmd.Parameters["@TotalRevenue"].Direction = ParameterDirection.Output;
cmd.Parameters["@UnitReturnValue"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
var taxTotal = cmd.Parameters["@TaxReturnValue"].Value;
var unitPriceTotal = cmd.Parameters["@UnitReturnValue"].Value;
var totalRenuve = cmd.Parameters["@TotalRevenue"].Value;
}
connection.Close();
}
感谢所有帮助家伙!
嘿朋友我尝试添加这不过它仍然返回0是否有我可以控制整个3列的表格作为一个对象,并从那里得到的值的方法吗?存储过程中的变量未被设置。 – Lostaunaum
更新答案正确返回变量 – Jaco
感谢的人更新为包含纠正编辑的代码的问题。非常感谢答复。 – Lostaunaum