ALTER proc GETTYPELIST 
@userid  int
AS
DECLARE @listall varchar(100)='' 
DECLARE @owntype varchar(100)='' 
SELECT @owntype=othertype  FROM  [H_user] WHERE  ID=279
return  @owntype
GO 
EXEC [GETTYPELIST] 279 
 执行的时候 
提示错误 消息245,级别16,状态1,过程GETTYPELIST,第7 行
在将varchar 值'6,12,16,14,12' 转换成数据类型int 时失败。

解决方案 »

  1.   

    ALTER proc GETTYPELIST 
        @userid  int
    AS
    DECLARE @listall varchar(100)
    set @listall='' 
    DECLARE @owntype varchar(100)
    set @owntype='' 
        SELECT @owntype=othertype  FROM  [H_user] WHERE  ID=279    
        return  @owntype
    GO 
    EXEC [GETTYPELIST] 279 
      

  2.   

    ALTER proc GETTYPELIST 
        @userid  varchar(100) --这里类型要改改****************
    AS
    DECLARE @listall varchar(100)='' 
    DECLARE @owntype varchar(100)='' 
        SELECT @owntype=othertype  FROM  [H_user] WHERE  ID=279    
        return  @owntype
    GO 
      

  3.   

    ALTER proc GETTYPELIST
    (
        @userid  int
    )
    AS
    begin
    DECLARE @listall varchar(100) 
    DECLARE @owntype varchar(100) 
    select @listall='', @owntype=''

    SELECT @owntype=othertype  FROM  [H_user] WHERE  ID=279    
    return  @owntype
    end
    GO 
    EXEC [GETTYPELIST] 279 
      

  4.   

    return  @owntype
    改成 select @owntype 看一下?
      

  5.   

    重新改下:ALTER proc GETTYPELIST
    (
        @userid  int
    )
    AS
    begin  
    DECLARE @owntype varchar(100) 

    SELECT @owntype=othertype  FROM  [H_user] WHERE  [ID]=@userid    
    return  @owntype
    end
    GO 
    EXEC [GETTYPELIST] 279 
      

  6.   

    各位大大们 都不行
    [H_user] 表里面 othertype 这个字段是nvarchar(100)
    按照4楼所说 
    查询结果就是 6,12,16,14,12 
    环境是sql2008 
    现在还是提示 消息245,级别16,状态1,过程GETTYPELIST,第7 行 
    在将varchar 值'6,12,16,14,12' 转换成数据类型int 时失败。
      

  7.   

    看错了,return只能返回整数,而你那个是字符型肯定会报错。
    改为:select @owntype
      

  8.   

    你的意思是SELECT @owntype=othertype  FROM  [H_user] WHERE  [ID]=279 有多个结果么?
      

  9.   

    ID是主键,只返回一行
    othertype里面的值'6,12,16,14,12' 
      

  10.   

    再试试这个ALTER proc GETTYPELIST
    (
        @userid  int
    )
    AS
    begin     
        DECLARE @owntype varchar(100)     
        
        SELECT @owntype=othertype  FROM  [H_user] WHERE  [ID]=@userid    
        select @owntype
    end
    GO EXEC [GETTYPELIST] 279 
      

  11.   

    select @owntype
    这个我明白
    但是为什么不能用return 返回呢 ?
      

  12.   

    return的值必须是INTALTER proc GETTYPELIST 
        @userid  int,
    @owntype nvarchar(100) OUTPUT
    AS
    DECLARE @listall varchar(100)='' 
    DECLARE @owntype varchar(100)='' 
        SELECT @owntype=othertype  FROM  [H_user] WHERE  ID=279    
        --return  @owntype  return的值必须是INT
    GO --调用
    DECLARE @type nvarchar(100)
    EXEC 279,@type = @owntype OUTPUT
    SELECT @type
      

  13.   

    这样用return 来返回这个值?