Sql2005中可以使用Try Catch 語句來捕獲異常了,不過這個只能捕獲一般的異常像連接錯誤的異常是不能捕獲的 具體用法如下:

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go


-- =============================================

-- Author: <Hongyu Niu>

-- Create date: <2007-7-21>

-- Description: 插入一條重大危險源檔案信息

-- Return Value:

-- =============================================


ALTER PROCEDURE [dbo].[P_DangerSource_File_Add]

@SourceName varchar(50), --名稱

@TypeID int, --類型

@DangerLevel varchar(30), --危險級別

@IsControl bit, --是否監控

@SourceLocation varchar(200), --危險源地點

@SourceNum int, --危險源數量

@Descrip varchar(200), --對危險源描述

@Accident varchar(150), --可能發生事故

@Summarize varchar(200), --概述

@Supervisor varchar(30), --負責人

@Telephone varchar(50), --聯系電話

@UserID varchar(50), --登記人ID

@InDate datetime, --登記日期

@IsChanged bit, --是否變更

@DeptID varchar(20) --部門ID

AS


Begin Try


INSERT INTO T_DangerSource_File (

[SourceName],

[TypeID],

[DangerLevel],

[IsControl],

[SourceLocation],

[SourceNum],

[Descrip],

[Accident],

[Summarize],

[Supervisor],

[Telephone],

[UserID],

[InDate],

[IsChanged],

[DeptID]

) VALUES (

@SourceName,

@TypeID,

@DangerLevel,

@IsControl,

@SourceLocation,

@SourceNum,

@Descrip,

@Accident,

@Summarize,

@Supervisor,

@Telephone,

@UserID,

@InDate,

@IsChanged,

@DeptID

)


return SCOPE_IDENTITY()


End Try


Begin Catch

return -1

End Catch