2014-12-17 3 views
1

Процедура магазина работает нормально и печатает значения во время тестирования. Но как только я хочу использовать вывод в команде 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 

ответ

1

Вам необходимо явно указать, что параметр должен быть использован для ВЫХОДА:

DECLARE @TotaleOmzet FLOAT 
DECLARE @TotaleBezoekers INT 
EXECUTE usp_OmzetPerFilm 
    @film = 'hobbit', 
    @jaar = 2014, 
    @jaaromzet = @TotaleOmzet OUTPUT, 
    @TotaalBezoekers = @TotaleBezoekers OUTPUT 

Кроме того, просмотрите типы - вы почти наверняка хотите использовать DECIMAL для финансовых итогов, не FLOAT, который может работать в вопросах точности.

+0

Сначала я пытаюсь использовать десятичное число, но когда захочу хранить десятичную дробь в таблицу, она округляется. У вас есть предложение, как это сделать? – Greg

+0

@ user3475722: 'DECIMAL' принимает как точность, так и масштаб, поэтому (например)' DECIMAL (10,5) 'может содержать 10 цифр с 5 цифрами после десятичной точки. 'DECIMAL' ничем не отличается от' DECIMAL (18,0) ', который не имеет дробной части. См. [Документы] (http://msdn.microsoft.com/ibrary/ms187746). –

+0

Теперь я настрою свои таблицы. Я хочу дать вам +1, но, поскольку я нахожусь на низком уровне, у вас есть моя благодарность. – Greg

2
Declare @TotaleOmzet int 
Declare @TotaleBezoekers int 
EXECUTE usp_OmzetPerFilm 'hobbit',2014,@TotaleOmzet OUTPUT, @TotaleBezoekers OUTPUT 

-- This does not work ? 
print @TotaleOmzet 
print @TotaleBezoekers 

Вы забыли выходное слово при выполнении процедуры.

Смежные вопросы