Вы не возвращаете возвращаемое значение (что вам нужно сделать, используя оператор RETURN , который в любом случае поддерживает только целые числа), а набор результатов. Попробуйте вместо этого параметр вывода:
create proc im.mmtest
@OutVal VARCHAR(10) OUTPUT
as
select @OutVal = 'testvalue'
go
и затем назовите это так:
DECLARE @Val VARCHAR(10)
EXECUTE im.mmtest @Val OUTPUT
SELECT @Val
Синтаксис для возвращаемого значения (которое ДОЛЖНО быть числовым):
RETURN(1) -- RETURN value 1
Синтаксис, который вы используете в данный момент, получит это возвращаемое значение. Но вы не можете сделать это с чем-то нечисловым, поэтому лучше всего использовать параметр OUTPUT.