admin 管理员组

文章数量: 1184232


2024年3月19日发(作者:extjs框架优势)

@ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted

AS -- by uspLogError in the ErrorLog table

BEGIN

SET NOCOUNT ON;

-- Output parameter value of 0 indicates that error

-- information was not logged

SET @ErrorLogID = 0;

BEGIN TRY

-- Return if there is no error information to log

IF ERROR_NUMBER() IS NULL

RETURN;

-- Return if inside an uncommittable transaction.

-- Data insertion/modification is not allowed when

-- a transaction is in an uncommittable state.

IF XACT_STATE() = -1

BEGIN

PRINT 'Cannot log error since the current transaction is in an uncommittable state. '

+ 'Rollback the transaction before executing uspLogError in order to successfully log error information.';

RETURN;

END

INSERT [dbo].[OperateErrorLog]

(

[OperateName],

[ErrorNumber],

[ErrorSeverity],

[ErrorState],

[ErrorProcedure],

[ErrorLine],

[ErrorMessage]

)

VALUES

(

CONVERT(sysname, CURRENT_USER),

ERROR_NUMBER(),

ERROR_SEVERITY(),

ERROR_STATE(),

ERROR_PROCEDURE(),

ERROR_LINE(),

ERROR_MESSAGE()

);

SET @ErrorLogID = @@IDENTITY;

END TRY

BEGIN CATCH

PRINT 'An error occurred in stored procedure uspLogError: ';

EXECUTE YourPrintErrorProcedure;-----------------打印错误信息的存储过程

RETURN -1;

END CATCH

END;

CREATE PROCEDURE YourPrintErrorProcedure

AS

BEGIN

SET NOCOUNT ON;

-- Print error information.

PRINT 'Error ' + CONVERT(varchar(50), ERROR_NUMBER()) +

', Severity ' + CONVERT(varchar(5), ERROR_SEVERITY()) +

', State ' + CONVERT(varchar(5), ERROR_STATE()) +

', Procedure ' + ISNULL(ERROR_PROCEDURE(), '-') +

', Line ' + CONVERT(varchar(5), ERROR_LINE());

PRINT ERROR_MESSAGE();

END;

CREATE TABLE [dbo].[ErrorLog](

[ErrorLogID] [int] IDENTITY(1,1) NOT NULL,

[ErrorTime] [datetime] NOT NULL CONSTRAINT [DF_ErrorLog_ErrorTime] DEFAULT (getdate()),

[UserName] [sysname] COLLATE Chinese_PRC_CI_AS NOT NULL,

[ErrorNumber] [int] NOT NULL,

[ErrorSeverity] [int] NULL,

[ErrorState] [int] NULL,

[ErrorProcedure] [nvarchar](126) COLLATE Chinese_PRC_CI_AS NULL,

[ErrorLine] [int] NULL,

[ErrorMessage] [nvarchar](4000) COLLATE Chinese_PRC_CI_AS NOT NULL,

CONSTRAINT [PK_ErrorLog_ErrorLogID] PRIMARY KEY CLUSTERED

(

[ErrorLogID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

ALTER PROC usp_AccountTransaction

1. @AccountNum INT,

2. @Amount DECIMAL

3. AS

4. BEGIN

5. BEGIN TRY --Start the Try Block..

6. BEGIN TRANSACTION -- Start the transaction..

7. UPDATE MyChecking SET Amount = Amount - @Amount

8. WHERE AccountNum = @AccountNum

9. UPDATE MySavings SET Amount = Amount + @Amount

10. WHERE AccountNum = @AccountNum

11. COMMIT TRAN -- Transaction Success!

12. END TRY

13. BEGIN CATCH

14. IF @@TRANCOUNT > 0

15. ROLLBACK TRAN --RollBack in case of Error

16. -- you can Raise ERROR with RAISEERROR() Statement including the details of the exception

17. --RAISERROR(ERROR_MESSAGE(), ERROR_SEVERITY(), 1)

DECLARE @ErrorMessage NVARCHAR(4000);

    DECLARE @ErrorSeverity INT;

   DECLARE @ErrorState INT;

  SELECT

  @ErrorMessage = ERROR_MESSAGE(),

  @ErrorSeverity = ERROR_SEVERITY(),

  @ErrorState = ERROR_STATE();

-- Use RAISERROR inside the CATCH block to return error

-- information about the original error that caused

-- execution to jump to the CATCH block.

  RAISERROR (@ErrorMessage, -- Message text.

  @ErrorSeverity, -- Severity.

  @ErrorState -- State.

   );

1.

2. END CATCH

3.

4. END

5.

6. GO

1. BEGIN TRY

2.

3. SELECT GETDATE()


本文标签: 框架 过程 作者 打印 优势