我需要插入一些数据,如果插入成功则返回一个值表示,比如1,如果插入失败或出错则回滚到数据插入之前,并返回另一个值表示,比如-1
我写了一点代码,不太完整,希望大家帮我修改指点一下,谢谢。create proc ag1_sh_data
as
DECLARE @TranName VARCHAR(20)
SET @TranName = 'ag1_sh'BEGIN TRANSACTION @TranName
go
use test 
go
insert into dbo.AG1TAB_cs
select * from dbo.lttest1
where agent_code like '%0A10' 
go
ROLLBACK TRANSACTION ag1_sh
go
据说在返回值的时候需要用到return,请大家多给点建议。

解决方案 »

  1.   

    use test --不能写在存储过程里面
    gocreate proc ag1_sh_data
    asBEGIN TRANSACTION ag1_shinsert into dbo.AG1TAB_cs
    select * from dbo.lttest1
    where agent_code like '%0A10'if @@error=0
    begin
    commit transaction
    return 1
    endelse
    begin
    ROLLBACK TRANSACTION ag1_sh
    return -1
    end
    go
      

  2.   

    按照代码创建存储过程后,并执行exec ag1_sh_data 成功,但是没有返回定义里return 1中1的值
      

  3.   

    程序里的函数调用存储过程的结果应该用int的函数吧
      

  4.   

    按你说的,应该使用输出参数,注意输出参数和存储过程返回值的区别。返回值为0,表示执行成功。返回值非0,表示执行失败。如:declare 
            @p1 int, 
            @p2 int, 
            @ret int
    exec @ret = 存储过程名 @p1, @p2 outputselect @ret as 返回值, @p2 as 输出参数值