if(@bianliang=1)
BEGIN
--当@bianliang等于1时,下边的更新语句正常实行
update tablename set a=1
return(2)
END
else
BEGIN
return(3)
END

解决方案 »

  1.   

    沒有見過,奇怪!你試試用set赋值,set @number=2
      

  2.   

    --测试--测试表
    create table tablename(a int)
    insert tablename values(100)
    go--测试存储过程
    create proc p_test
    @bianliang int=1,
    @number int=2
    as
    if(@bianliang=1)
    BEGIN
    --当@bianliang等于1时,下边的更新语句正常实行
    update tablename set a=1
    select @number=2
    END
    else
    BEGIN
    select @number=3
    END
    RETURN  @number
    go--调用
    declare @number int
    exec @number=p_test 1
    select 结果1=@numberexec @number=p_test 0
    select 结果2=@number
    go--删除测试
    drop table tablename
    drop proc p_test/*--测试结果结果1         
    ----------- 
    2(所影响的行数为 1 行)结果2         
    ----------- 
    3(所影响的行数为 1 行)
    --*/
      

  3.   

    谢谢 usource_tjh(華仔)  的回复,但是你的方法可能不好使。
    你可以自己试一下。我感觉
    有insert into 或者 update 等语句,下面的
    select @number=2 赋值 或者 return(2)
    都没有反应,如同虚设?
      

  4.   

    update tablename set a=1 where @bianliang=1
      

  5.   

    playyuer(双规干部) 
    谢谢,不是这句
    我写这句的目的是这个更新的语句能成功运行但是他下面一行赋值的语句
    select @number=2在我现在返回参数时是空的,也就是刚才的赋值语句几乎没有什么用。
      

  6.   

    -------------------------------------------------------------------
    我的电脑上的测试结果表明,不是你帖出部分的代码的问题. 检查其他代码
    -------------------------------------------------------------------
    我的存储过程用SQL来调试的确都有返回值,都是对的。但是我用ASP语句调用的时候response.write Cmd.Parameters("number")
    就是输出的值。这个值在没有
    update tablename set a=1
    这一行
    那么ASP都能有正确的返回值但是有
    update tablename set a=1
    这句以后他下面的变量赋值,在ASP中就没有返回值这是怎么回事?