输出参数值未返回

时间:2014-12-17 15:18:16

标签: sql sql-server

商店程序运行正常,并且在我测试时打印值。 但是一旦我想在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

2 个答案:

答案 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,这会导致准确性问题。