MSSQL存储过程的异常处理之

1、第一个简单实例
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROC [dbo].[stu_countSex]  
@output varchar(100) output
AS 
begin
begin try
select * from student
end try
begin catch
print '出现了异常'
end catch
end
2、第二个复杂实例
CREATE PROCEDURE Proc_InsertTemp
     (@number varchar(3000),
    @name varchar(2100),
    @output varchar(100) output )
AS
BEGIN
  SET NOCOUNT ON;
  DECLARE @outputerr varchar(3000)

  BEGIN TRY
    insert into dbo.Table_1 values(@number,@name)
  END TRY
  BEGIN CATCH
    --在这里添加错误处理语句
  END CATCH
  if (@@error<>0 or @@rowcount = 0)
   begin
     select @output = '-1'
     rollback transaction operTran1
     return
   end
  else
  begin
    COMMIT TRANSACTION operTran1
  end
END
注意:下面多了一个if @@error<>0 or @@rowcount=0。

总结:
@@error 是一个内置的全局变量,为0表示最近的一次操作没有错误.
@@rowcount是指存储过程返回受影响的行数;

你可能感兴趣的:(MSSQL)