My stored procedure
ALTER procedure [dbo].[cGetGrossMargin_sp]
(@OrderHeaderID INT)
AS
set ansi_warnings off
declare
@TotalPrice money,
@MaterialCost money,
@LaborCost money,
@GrossMargin money,
@SalesTax decimal(15,4),
@TaxAssessed money,
@TaxedMaterialCost money
select
@SalesTax = (SalesTax * .01)
from
OrderHeader
where
OrderHeaderID = @OrderHeaderID
set @SalesTax = isnull(@SalesTax,0)
select
@TotalPrice = sum(MaterialPrice * SellQuantity)
from
OrderDetail
where
OrderHeaderID = @OrderHeaderID
select
@LaborCost = sum(isnull(LaborCost, 0) * SellQuantity)
from
OrderDetail
where
OrderHeaderID = @OrderHeaderID
select
@MaterialCost = sum(isnull(MaterialCost, 0) * PurchaseQuantity)
from
OrderDetail
where
OrderHeaderID = @OrderHeaderID
SELECT @TotalPrice = ISNULL(@TotalPrice, 0)
SELECT @LaborCost = ISNULL(@LaborCost, 0)
SELECT @MaterialCost = ISNULL(@MaterialCost, 0)
-- Do not include materialcost for item purchased from vendors that do not charge sales tax
select
@TaxedMaterialCost = sum(isnull(od.MaterialCost, 0) * isnull(od.PurchaseQuantity, 0))
from
OrderDetail od
inner join
Vendor v on v.VendorID = od.VendorID and v.SalesTaxed = 1
where
od.OrderHeaderID = @OrderHeaderID
select @TaxAssessed = @TaxedMaterialCost * @SalesTax
SELECT @TaxAssessed = ISNULL(@TaxAssessed,0)
if @TotalPrice > 0
begin
select @GrossMargin = 1 - ((@MaterialCost + @LaborCost + @TaxAssessed) / @TotalPrice)
end
else
begin
select @GrossMargin = 0.00
end
create table #tmp
(
TotalPrice decimal(9,2),
MaterialCost decimal(9,2),
LaborCost decimal(9,2),
GrossMargin decimal(9,2),
TaxAssessed decimal(9,2)
)
insert into #tmp (TotalPrice, MaterialCost, LaborCost, GrossMargin,
TaxAssessed)
select
@TotalPrice as TotalPrice,
@MaterialCost as MaterialCost,
@LaborCost as LaborCost,
@GrossMargin as GrossMargin,
@TaxAssessed as SalesTax
select * from #tmp
It keeps saying it only returns a int32 and not a result when I call in C#, as below
public List<GetGrossMargins> GetExtCalculations(int id)
{
ExoEntities = new ExoEntities();
List<GetGrossMargins> lst = new List<GetGrossMargins>();
var query = ExoEntities.cGetGrossMargin_sp(id);
foreach(var a in query)
{
}
return lst;
}
What in the stored procedure would cause it to come back as an int32 and not as a result, and how do I fix it? I have tried using ToList()
but that didn't do anything.
UPDATED stored procedure:
ALTER procedure [dbo].[cGetGrossMargin_sp]
(@OrderHeaderID INT)
AS
set ansi_warnings off
SET NOCOUNT ON;
declare
@TotalPrice money,
@MaterialCost money,
@LaborCost money,
@GrossMargin money,
@SalesTax decimal(15,4),
@TaxAssessed money,
@TaxedMaterialCost money
select @SalesTax = (SalesTax * .01) from OrderHeader where OrderHeaderID = @OrderHeaderID
set @SalesTax = isnull(@SalesTax,0)
select @TotalPrice = sum(MaterialPrice * SellQuantity) from OrderDetail where OrderHeaderID = @OrderHeaderID
select @LaborCost = sum(isnull(LaborCost,0) * SellQuantity) from OrderDetail where OrderHeaderID = @OrderHeaderID
select @MaterialCost = sum(isnull(MaterialCost,0) * PurchaseQuantity) from OrderDetail where OrderHeaderID = @OrderHeaderID
SELECT @TotalPrice = ISNULL(@TotalPrice,0)
SELECT @LaborCost = ISNULL(@LaborCost,0)
SELECT @MaterialCost = ISNULL(@MaterialCost,0)
-- Do not include materialcost for item purchased from vendors that do not charge sales tax
select
@TaxedMaterialCost = sum(isnull(od.MaterialCost,0) * isnull(od.PurchaseQuantity,0))
from
OrderDetail od
inner join Vendor v on v.VendorID = od.VendorID and v.SalesTaxed = 1
where
od.OrderHeaderID = @OrderHeaderID
--select @TaxAssessed = @MaterialCost * @SalesTax
select @TaxAssessed = @TaxedMaterialCost * @SalesTax
SELECT @TaxAssessed = ISNULL(@TaxAssessed,0)
if @TotalPrice > 0
begin
select @GrossMargin = 1 - ((@MaterialCost + @LaborCost + @TaxAssessed) / @TotalPrice)
end
else
begin
select @GrossMargin = 0.00
end
create table #tmp
(
TotalPrice decimal(9,2),
MaterialCost decimal(9,2),
LaborCost decimal(9,2),
GrossMargin decimal(9,2),
TaxAssessed decimal(9,2)
)
insert into #tmp
(
TotalPrice,
MaterialCost,
LaborCost,
GrossMargin,
TaxAssessed
)
select
@TotalPrice as TotalPrice,
@MaterialCost as MaterialCost,
@LaborCost as LaborCost,
@GrossMargin as GrossMargin,
@TaxAssessed as SalesTax
select * from #tmp