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'转换为数据类型时 中间体
请帮我解决这个问题
答案 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