declare @t varchar(50),@f_id int,@a_name nvarchar(100),@a_id2 int
select @f_id=@@identity
--while(charindex(@f_fuliao,"|")<>0)
while(charindex('、',@f_fuliao)<>0)
begin
set @t=left(@f_fuliao,charindex('、',@f_fuliao)-1)  
select @a_id2=a_id from PF_fuliao where a_name=@t 
set   @f_fuliao  = right(@f_fuliao,len(@f_fuliao)-1-len(@t))
insert into pf_f_f(f_id,a_id) values(@f_id,@a_id2)
  if   @@error<>0  
begin
raiserror 50005 N'Error:出错了'
rollback   tran
return --返回,不执行下面语句
end end
select @a_id2=a_id from PF_fuliao where a_name=@f_fuliao insert into pf_f_f(f_id,a_id) values(@f_id,@a_id2)
if   @@error<>0  
begin
raiserror 50005 N'Error:出错了'
rollback   tran
return --返回,不执行下面语句
end commit transaction
end

解决方案 »

  1.   

    原来老是显示 COMMIT TRANSACTION 请求没有相应 BEGIN TRANSACTION 
    这样修改了还会吗?请再帮我看看,我暂时测试不了
      

  2.   


    begin tran 和rollback tran 没有一一对应
      

  3.   

    中国风 击中问题要害: rollback tran 后没有 return 退出过程。
      

  4.   


    declare @t varchar(50),@f_id int,@a_name nvarchar(100),@a_id2 int
    select @f_id=@@identity
    --while(charindex(@f_fuliao,"|")<>0)
    while(charindex('、',@f_fuliao)<>0)
    begin
        set @t=left(@f_fuliao,charindex('、',@f_fuliao)-1)  
        select @a_id2=a_id from PF_fuliao where a_name=@t 
        set   @f_fuliao  = right(@f_fuliao,len(@f_fuliao)-1-len(@t))
        insert into pf_f_f(f_id,a_id) values(@f_id,@a_id2)
          if   @@error<>0  
            begin
                raiserror 50005 N'Error:出错了'
                rollback   tran
                return --返回,不执行下面语句
            end    end
        select @a_id2=a_id from PF_fuliao where a_name=@f_fuliao    insert into pf_f_f(f_id,a_id) values(@f_id,@a_id2)
        if   @@error<>0  
            begin
                raiserror 50005 N'Error:出错了'
                rollback   tran
                return --返回,不执行下面语句
            end
    endcommit transactionreturn
      

  5.   


    begin tran
    declare @t varchar(50),@f_id int,@a_name nvarchar(100),@a_id2 int 
    select @f_id=@@identity 
    --while(charindex(@f_fuliao," ¦") <>0) 
    while(charindex('、',@f_fuliao) <>0) 
    begin 
        set @t=left(@f_fuliao,charindex('、',@f_fuliao)-1)  
        select @a_id2=a_id from PF_fuliao where a_name=@t 
        set  @f_fuliao  = right(@f_fuliao,len(@f_fuliao)-1-len(@t)) 
        insert into pf_f_f(f_id,a_id) values(@f_id,@a_id2) 
          if  @@error <>0  
            begin 
                raiserror 50005 N'Error:出错了' 
                rollback  tran 
                return --返回,不执行下面语句 
            end     end 
        select @a_id2=a_id from PF_fuliao where a_name=@f_fuliao     insert into pf_f_f(f_id,a_id) values(@f_id,@a_id2) 
        if  @@error <>0  
            begin 
                raiserror 50005 N'Error:出错了' 
                rollback  tran 
                return --返回,不执行下面语句 
            end 
    end commit transaction return
      

  6.   

    请问用C#怎么接收呢?
    大家也可以用别的代码(asp或其他的都行)写个例子,大谢特谢
      

  7.   

    出错的时候这样:但是我不知道怎么写代码接受处理不能将值 NULL 插入列 'a_id',表 'medinc.dbo.PF_f_f';列不允许有空值。INSERT 失败。
    Error:出错了语句已终止。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 不能将值 NULL 插入列 'a_id',表 'medinc.dbo.PF_f_f';列不允许有空值。INSERT 失败。
    Error:出错了
    语句已终止。