如何从存储过程返回字符串值

时间:2011-06-23 06:35:52

标签: sql sql-server-2008

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'转换为数据类型时   中间体

请帮我解决这个问题

3 个答案:

答案 0 :(得分:19)

您将结果放在RETURN值而不是传递的@r值中。

来自MSDN

  

(RETURN)       是返回的整数值。存储过程可以返回   调用的整数值   程序或申请。

更改您的程序。

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

答案 1 :(得分:6)

改变你的

return @str1+'present in the string' ;

set @r = @str1+'present in the string' 

答案 2 :(得分:1)

使用SELECT或输出参数。 更多信息可以在这里找到: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=100201