return 只能返回 int 如果你要返回可以用output
或者 select 

解决方案 »

  1.   

    1、varchar不加长度默认为varchar(1),很有可能导致数据截断,强烈建议加上,毕竟变长类型,空间浪费情况比较少。
    2、试试这个:
    ALTER proc p_7
    @sno varchar(20)  --参数
    as
    declare @sname varchar(20); --局部变量,必须使用declare,可以不加长度,declare @name varchar
    select @sname=sname from student where sno=@sno;
    return @sname;  --返回值
    go
    3、检查一下sno和sname是否有数值型
      

  2.   

    额,1楼说的对,忘了return返回的是int类型
      

  3.   


    已尝试,return返回int型数据没问题。谢谢!
      

  4.   

    你这样的情况应该是定义输出参数,而非靠存储过程自身执行的返回状态值来输出。create proc usp_test
    @sno varchar(20)
    @sname varchar(20) out
    as
    select @sname=name from student where no=@sno
      

  5.   


    已尝试,return返回int型数据没问题。谢谢!修改了一下,注意在存储过程中是不能返回值的,也就是不能return xxx:CREATE TABLE student(
    [sno] [varchar](10) primary key NOT NULL,
    [sname] [varchar](20) NULL,
    [sage] [int] NULL,
    [ssex] [varchar](5) NULL,
    )
    go
    insert into student
    select 's002','xxxx',20,'man'
    go
    create proc p_7
    @sno varchar(20),  --参数
    @sname varchar(20) out   --通过输出参数来返回值
    as
     --局部变量,必须使用declare,可以不加长度,declare @name varchar
    select @sname=sname from student where sno=@sno;--在存储过程中不能返回值
    --return @sname;  --返回值
    go
    declare @sname varchar(20)
    exec p_7 's002',@sname outselect @sname as sname
    /*
    sname
    xxxx
    */