解决方案 »

  1.   

    在程序中,捕捉到未处理的错误,会直接跳出@@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
      

  2.   

    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