Как вернуть строковое значение из хранимой процедуры - PullRequest
14 голосов
/ 23 июня 2011
Alter procedure S_Comp(@str1 varchar(20),@r varchar(100) out)
as
declare  @str2 varchar(100)
set @str2  ='welcome to sql server. Sql server is a product of Microsoft'
if(PATINDEX('%'+@str1 +'%',@str2)>0)
    return @str1+'present in the string'
else 
    return @str1+'not present'

Я выполняю вышеуказанную хранимую процедуру.Я получаю следующую ошибку:

Сообщение 245, Уровень 16, Состояние 1, Процедура S_Comp, Строка 8 Преобразование не удалось при преобразовании значения varchar 'Amruthanot present' в тип данных int.

Пожалуйста, помогите мне решить эту проблему

Ответы [ 3 ]

19 голосов
/ 23 июня 2011

Вы помещаете свой результат в значение RETURN вместо переданного значения @r.

От MSDN

(ВОЗВРАТ) Целочисленное значение, которое возвращается.Хранимые процедуры могут возвращать целое значение вызывающей процедуре или приложению.

Изменение вашей процедуры.

ALTER procedure S_Comp(@str1 varchar(20),@r varchar(100) out) as 

    declare @str2 varchar(100) 
    set @str2 ='welcome to sql server. Sql server is a product of Microsoft' 
    if(PATINDEX('%'+@str1 +'%',@str2)>0) 
        SELECT @r =  @str1+' present in the string' 
    else 
        SELECT @r = @str1+' not present'

Вызов процедуры

  DECLARE @r VARCHAR(100)
  EXEC S_Comp 'Test', @r OUTPUT
  SELECT @r
6 голосов
/ 23 июня 2011

измени свой

return @str1+'present in the string' ;

до

set @r = @str1+'present in the string' 
1 голос
/ 23 июня 2011

Используйте SELECT или выходной параметр.Больше можно найти здесь: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=100201

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...