create proc p_dd 
as  
begin 
BEGIN TRANSACTION update c set soid = 0--(任意語句) 
select 1/0  
if @@ERROR <>0 
begin
   rollback tran
   select 0
   return
end 
else
begin
   commit tran
   SELECT 1       
   RETURN  
endEND 

解决方案 »

  1.   

    跳了呀select 1/0  
    if @@ERROR =0 
    begin
        COMMIT TRANSACTION 
        SELECT 1       
    end      
    else   
    begin   
        rollback transaction    
        select 0
    end
    return
      

  2.   

    苦*行*僧
    无枪狙击手
    我嘗試過將兩位的復制上去,仍是報以下的錯:
    Msg 8134, Level 16, State 1, Procedure p_dd, Line 7
    Divide by zero error encountered. 我用的是SQL2005,真的想不明白
      

  3.   

    drop table c
    create table c(soid int)
    insert into c select 1create proc p_dd 
    as  
    begin 
    BEGIN TRANSACTION 
    update c set soid = 0--(任意語句) 
    select 1/0  
    if @@ERROR <>0 
    begin
       rollback tran
    end 
    else
    begin
       commit tran
    end
    END exec p_ddselect * from c
    1老return 干吗?
      

  4.   

    怪事,怎么我原原本本將你的代碼復制上去,仍然有錯呢?Divide by zero error encountered.  
      

  5.   

    try catch用这个加事物试试!