create proc pr_inter_reg @cpname nvarchar(40) 
as
create table #t(str nvarchar(20))
select * from Tlogname where logname=@cpname
if @@rowcount>0     ----------------------------标志 1
begin
insert #t select '登陆名存在!'
end
else
begin
insert #t select '注册成功!'
begin tran inter_insert
insert Tlogname select @cpname,',1,',null,null,''
insert Tcompany_user select lognid,@cpname
from Tlogname where logname=@cpname
insert Tcuser_assist select lognid,'n' 
from Tlogname where logname=@cpname
insert Tcuser_bill select lognid,'0',3
from Tlogname where logname=@cpname 
if @@error<>0  goto error_sign   -->改這里
--commit tran inter_insert    -->不要這行
       commit tran
      select '操作成功﹗'
 end 
error_sign:
if @@error<>0
begin 
      rollback tran
     select '失敗操作﹗'
endgo

解决方案 »

  1.   

    搞得这么麻烦?create proc pr_inter_reg @cpname nvarchar(40) 
    as
    --加一下这句
    set nocount on-- create table #t(str nvarchar(20))
    --不必临时表,变量就可以了
    declare @str varchar(200)select * from Tlogname where logname=@cpname
    if @@rowcount>0     ----------------------------标志 1
       begin
    --insert #t select '登陆名存在!'
             set @str='登陆名存在!'
       end
    else
       begin
    --insert #t select '注册成功!'
             set @str='注册成功!' begin tran inter_insert
    insert Tlogname select @cpname,',1,',null,null,''
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @str='异常出错'
                      goto NextStep
    end
    insert Tcompany_user select lognid,@cpname
    from Tlogname where logname=@cpname
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @str='异常出错'
                      goto NextStep
    end
    insert Tcuser_assist select lognid,'n' 
    from Tlogname where logname=@cpname
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @str='异常出错'
                      goto NextStep
    end
    insert Tcuser_bill select lognid,'0',3
    from Tlogname where logname=@cpname 
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @str='异常出错'
                      goto NextStep
    end
    else
    begin
    commit tran inter_insert
    end
       end 
    NextStep:
    --   select str from #t
       select @str as str
    go呵呵,两个记录集返回的方法应该不如用返回值的方法错了不管!!!哈,哈哈,哈哈哈......
      

  2.   

    只检测一次@@error等于没有检测错误,用返回值的方法:create proc pr_inter_reg @cpname nvarchar(40) 
    as
    set nocount ondeclare @r int
    set @r=0
    select * from Tlogname where logname=@cpname
    if @@rowcount>0     ----------------------------标志 1
       begin
             set @r=1
       end
    else
       begin begin tran inter_insert
    insert Tlogname select @cpname,',1,',null,null,''
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @r=2
                      goto NextStep
    end
    insert Tcompany_user select lognid,@cpname
    from Tlogname where logname=@cpname
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @r=2
                      goto NextStep
    end
    insert Tcuser_assist select lognid,'n' 
    from Tlogname where logname=@cpname
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @r=2
                      goto NextStep
    end
    insert Tcuser_bill select lognid,'0',3
    from Tlogname where logname=@cpname 
    if @@error!=0 or @@rowcount=0 
    begin
    rollback tran inter_insert 
                      set @r=2
                      goto NextStep
    end
    else
    begin
    commit tran inter_insert
    end
       end 
    NextStep:go
    错了不管!!!哈,哈哈,哈哈哈......
      

  3.   

    等一下Hahahahahaha(哈,哈哈,哈哈哈...) 大哥,
    我在asp 程序中要如何得到str 或者 r呢???
      

  4.   

    我看你的意思是想要在asp程序中得到注册成功还是失败,失败有两种:登陆名存在、异常出错
    其实在asp程序中如果异常出错,就是表插入失败时是返回出错信息的,就是页面出错
    所以你只要知道注册成功了还是登陆名已经存在,所以你也不要什么临时表或者什么临时变量,你只要看一下你的第一个select,就是select * from Tlogname where logname=@cpname
    在asp程序中判断这个记录集是否为空,为空就是注册成功了,不为空就是登陆名存在至于如何得到变量或者临时表的值我也不知道,呵呵,个人意见。。