這是我的存儲過程,該查詢返回三列一個表,每列內的總量。存儲過程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