在程序中,捕捉到未处理的错误,会直接跳出@@error还是有用的,可以根据错误编号进行处理BEGIN TRY INSERT INTO A SELECT * FROM A1 (NOLOCK) END TRY BEGIN CATCH IF @@ERROR = 2627 BEGIN SELECT @errCode = 2627 ,@errMsg = '主键重复!' END END CATCH
goto要这样用 DECLARE @errCode INT,@errMsg NVARCHAR(200) BEGIN TRAN INSERT INTO A SELECT * FROM A1 (NOLOCK) IF @@ERROR <> 0 BEGIN SELECT @errCode = 898989 ,@errMsg = 'AAAAAA!' GOTO ERROR ENDSuccess: COMMIT TRAN RETURNERROR: SELECT @errCode ,@errMsg ROLLBACK TRAN
INSERT INTO A
SELECT *
FROM A1 (NOLOCK)
END TRY
BEGIN CATCH
IF @@ERROR = 2627
BEGIN
SELECT @errCode = 2627 ,@errMsg = '主键重复!'
END
END CATCH
DECLARE @errCode INT,@errMsg NVARCHAR(200)
BEGIN TRAN
INSERT INTO A
SELECT *
FROM A1 (NOLOCK)
IF @@ERROR <> 0
BEGIN
SELECT @errCode = 898989 ,@errMsg = 'AAAAAA!'
GOTO ERROR
ENDSuccess:
COMMIT TRAN
RETURNERROR:
SELECT @errCode ,@errMsg
ROLLBACK TRAN