Mathtutor 5,6,32

(return status=0)

 

Значение параметра, определенного с опцией output, должно передаваться через переменную, а не через константу. В следующем примере переменная @guess используется для передачи в процедуру mathtutor значения третьего параметра. При этом SQL Сервер выводит значение возвращаемого параметра:

 

declare @guess int

select @guess = 32

exec mathtutor 5, 6, @result = @guess output

(1 row affected)

(return status = 0)

Return parameters:

@result     

----------- 

       30

 

Значения возвращаемых параметров выводятся всегда, независимо от того, изменились эти значения, или нет. Заметим, что:

· · В предыдущем примере выходной параметр @result должен передаватьсяв виде “@параметр=@переменная”. Если бы он не был последним передаваемым параметром, то все следующие за ним параметры также должны передаваться в таком же виде;

· · Переменную @result  не нужно объявлять в вызывающем пакете, поскольку это название параметра процедуры mathtutor.

· · Несмотря на то, что измененное значение параметра @result возвращается через переменную, указанную в операторе execute, в данном случае через переменную @guess, оно выводится под своим названием, т.е. @result.

 

Если в дальнейшем после оператора execute может потребоваться первоначальное значение переменной @guess, то его нужно сохранить в другой переменной перед вызовом процедуры. Следующий пример иллюстрирует  использование переменной @store для хранения значения переменной во время выполнения сохраненной процедуры, и использование “нового” возвращаемого значения переменной @guess в условных конструкциях:

 

declare @guess int

declare @store int

select @guess = 32

select @store = @guess

execute mathtutor 5, 6, @result = @guess output

select Your_answer = @store, Right_answer = @guess

if @guess = @store

    print "Right-o"