在存储过程中定义变量,
declare @bl int outputOUTPUT
表明参数是返回参数。该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用过程。Text、ntext 和 image 参数可用作 OUTPUT 参数。使用 OUTPUT 关键字的输出参数可以是游标占位符。

解决方案 »

  1.   

    declare @b int output
    ... ...
    假设a是主键,insert 完成后:
    select @b=b from table1 where a=@a --@a应是存储过程的接收参数。
    必须有个主键。
      

  2.   

    请问:
       我对这个select 语句不太懂,为何是 where a = @a ,本来@a是一个接受参数,为何能够作为查询条件呢,我如何才能定位到当前插入的行的位置呢?
       多谢!
      

  3.   

    declare @b int output
    select @b=b from inserted
      

  4.   

    如果你的表里有identity字段:
    假设identity字段是id
    insert into table1(a) values('Hello')
    select b from table1 where id=@@identity
      

  5.   

    请教:
      我在执行select @b=b from inserted 后的返回结果是:
      Invalid object name 'inserted'.
    我该咋办呢?
      另外,我要求得到的这个值不是identity域段。谢了!
      

  6.   

    lihao9806(李昊)的做法不对,触发器好象不能返回值的,select @b=b from inserted 之类只能写在触发器里,写在存储过程里当然是
      Invalid object name 'inserted'。
    还是照我或seafo(海之牙)的办吧! 
      

  7.   

    我对吃素的狼的答复:这个select 语句不太懂,为何是 where a = @a ,本来@a是一个接受参数,为何能够作为查询条件呢,我如何才能定位到当前插入的行的位置呢?
      多谢!    
      

  8.   

    可以这样,建立一个临时表
    create table #tt(k int);
    insert into #tt values(null);----
    触发器中
    .............
    update #tt set k=i.b;
    ..............
    ------------
    过程中
    select @b=k from #tt;