商店程序运行正常,并且在我测试时打印值。 但是一旦我想在execute命令中使用输出。它返回商店过程中的打印件和执行中的2个空行。我继续阅读代码,但它看起来很好。 有人可以看看这个。我的商店程序如下:
if OBJECT_ID ('dbo.usp_OmzetPerFilm')is not null
drop procedure usp_OmzetPerFilm
go
create procedure usp_OmzetPerFilm
@film varchar(250),
@jaar int,
@jaaromzet float output ,
@TotaalBezoekers int output
as
begin
Select @TotaalBezoekers = Sum(AantalTickets ) from ticketVerkoop
Inner Join prijsTicket on prijsTicket .idPrijs = ticketVerkoop .idPrijs
Inner Join film on film.idfilm = ticketVerkoop .idfilm
where @jaar = Jaar and @film = film.naam
Select @jaarOmzet = Sum(prijsTicket .prijs * ticketVerkoop.AantalTickets ) from ticketVerkoop
Inner Join prijsTicket on prijsTicket .idPrijs = ticketVerkoop .idPrijs
Inner Join film on film.idfilm = ticketVerkoop .idfilm
where @jaar = Jaar and @film = film.naam
--This does work
print @jaaromzet
print @totaalBezoekers
end
go
但是当我使用执行任务时。 它仅从存储过程打印值,但不从execute命令打印。 我有什么遗失的吗?
Declare @TotaleOmzet int
Declare @TotaleBezoekers int
EXECUTE usp_OmzetPerFilm 'hobbit',2014,@TotaleOmzet, @TotaleBezoekers
-- This does not work ?
print @TotaleOmzet
print @TotaleBezoekers
答案 0 :(得分:2)
Declare @TotaleOmzet int
Declare @TotaleBezoekers int
EXECUTE usp_OmzetPerFilm 'hobbit',2014,@TotaleOmzet OUTPUT, @TotaleBezoekers OUTPUT
-- This does not work ?
print @TotaleOmzet
print @TotaleBezoekers
执行程序时忘记了OUTPUT字。
答案 1 :(得分:1)
您需要明确指定该参数将用于OUTPUT:
DECLARE @TotaleOmzet FLOAT
DECLARE @TotaleBezoekers INT
EXECUTE usp_OmzetPerFilm
@film = 'hobbit',
@jaar = 2014,
@jaaromzet = @TotaleOmzet OUTPUT,
@TotaalBezoekers = @TotaleBezoekers OUTPUT
另外,请检查您的类型 - 您几乎肯定希望将DECIMAL
用于财务总计,而不是FLOAT
,这会导致准确性问题。