我写了一非常简单的存储过程,如下
create procedure czpro(@id int)
as 
begin
declare @var varchar(10)
select @var=cast(id as varchar(6))+name from cz where id=@id
return @var
end------------------------------
id为int,name 为varchar
表结构
id               name
1                cz1
2                cz2
3                cz3
.                  .
.                  .-----------------------
我在调用的时候
exec czpro '8'
----------------
返回结果竟然是
服务器: 消息245,级别16,状态1,过程czpro 行9
将varchar 值 '8cz8                 '转换为数据类型为int 的列时发生语法错误
有人知道这是为什么吗?

解决方案 »

  1.   

    return @var是错误的,在存储过程中默认返回值只能是int型,你如果要返回varchar型,请用函数或者output变量
      

  2.   

    select @var=cast(id as varchar(6))+name from cz where id=@id
    return @varname 为varchar,所以@var 结果的类型为 varchar而存储过程的返回值是不能返回varchar类型的,只会返回int类型.
      

  3.   


    存储过程中默认返回值只能是int型