2013-08-14 3 views
1

В настоящее время я изучаю хранимые процедуры и пытаюсь выполнить простое упражнение по добавлению двух чисел, передав их в my sp. Проблема, с которой я столкнулся, - это преобразование типов данных и потеря данных. я определяю свою процедуру следующим образом:Сохраненные процедуры: добавление двух чисел путем передачи их в качестве параметров

create proc addn(@a float, @b float) 
as 
begin 
declare @sum varchar 
set @sum=cast((@[email protected]) as varchar) 
print 'the sum of '+cast(@a as varchar)+' and '+cast(@b as varchar)+' is ' cast((@[email protected]) as varchar) 
print @sum 
end 

Процедура вызывается следующим образом:

declare @a1 float, @b1 float 
set @a1=41 
set @b1=6.2 
exec addn @a1,@b1 

В результате я получаю:

the sum of 41 and 6.2 is 47.2 
4 

Теперь я могу Не понимаю, почему я получаю только 4 в @sum. Он хранит только первую цифру результата любого добавления, которое выполняется. Пожалуйста помоги!

ответ

1

Проблема заключается в объявлении параметра @sum. В вашем случае тип данных переменной @sum является только varchar, и SQL будет считать, что это только один символ, поэтому вы должны поместить некоторое значение int в скобки, например VARCHAR (4) или что-то еще.

create proc addn(@a float, @b float) 
as 
begin 
declare @sum varchar(4) 
set @sum=cast((@[email protected]) as VARCHAR) 
print 'the sum of '+cast(@a as varchar) + ' and ' + cast(@b as varchar) + ' is ' + cast((@[email protected]) as VARCHAR) 
print @sum 
END 
+0

Спасибо! Это очень хорошо отвечает на мой вопрос. – Akash

+0

Добро пожаловать, в любое время :) – veljasije

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

  • Нет связанных вопросов^_^