mamizadeh
شنبه 18 آبان 1387, 00:42 صبح
-- ================================================== ========================================
-- _SPN
-- Author: Mamizadeh
-- Create date: 2008
-- ================================================== ========================================
CREATE PROCEDURE _SPN
AS
BEGIN
-- START TRANSACTION
BEGIN TRY
BEGIN TRANSACTION;
-- ================================================== ========================================
-- COMMANDS
-- ================================================== ========================================
COMMIT TRANSACTION;
SELECT
0 AS ERROR_FLAG,
'عملیات با موفقیت انجام شد' AS MESSAGE_FLAG
END TRY
-- WHEN GIVE A ERROR GO TO THIS SECTION
BEGIN CATCH
-- SAVE ERROR INFORMATION IN ERROR TABLE THAT CALL T_ERROR
DECLARE @SP_NAME NVARCHAR(50)
SET @SP_NAME = '_SPN'
DECLARE @ERRORID INT
SET @ERRORID = (SELECT MAX(ERRORID) FROM T_ERROR)
SET @ERRORID = (@ERRORID + 1)
INSERT INTO T_ERROR
(ERRORID,SP_NAME,ERROR_NUMBER,ERROR_SEVERITY,ERROR _STATE,ERROR_PROCEDURE,ERROR_LINE,ERROR_MESSAGE,DA TE)
VALUES
(@ERRORID,@SP_NAME,ERROR_NUMBER(),ERROR_SEVERITY() ,ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERRO R_MESSAGE(),GETDATE())
-- TRANSACTION CONTROL FOR ROLLBACK
IF (XACT_STATE()) = -1
BEGIN
SELECT
-1 AS ERROR_FLAG,
ERROR_MESSAGE() AS MESSAGE_FLAG
ROLLBACK TRANSACTION;
END;
-- TRANSACTION CONTROL FRO COMMIT
IF (XACT_STATE()) = 1
BEGIN
SELECT
1 AS ERROR_FLAG,
ERROR_MESSAGE() AS MESSAGE_FLAG
COMMIT TRANSACTION;
END;
END CATCH;
END
نظر شما در رابطه با این کنترل تراکنش چیه درسته که این طوری استفاده کنم
و ثانیا به نظر اساتید
در کدام مورد باید تراکنش رعایت بشه
select
insert
update
delete
و یا تمام موارد
و سوال بعدی اینکه هزینه زمانی کنترل خطا و تراکنش در sql server چقدره زیاد بالا نیست ؟
با تشکر
یا علی
-- _SPN
-- Author: Mamizadeh
-- Create date: 2008
-- ================================================== ========================================
CREATE PROCEDURE _SPN
AS
BEGIN
-- START TRANSACTION
BEGIN TRY
BEGIN TRANSACTION;
-- ================================================== ========================================
-- COMMANDS
-- ================================================== ========================================
COMMIT TRANSACTION;
SELECT
0 AS ERROR_FLAG,
'عملیات با موفقیت انجام شد' AS MESSAGE_FLAG
END TRY
-- WHEN GIVE A ERROR GO TO THIS SECTION
BEGIN CATCH
-- SAVE ERROR INFORMATION IN ERROR TABLE THAT CALL T_ERROR
DECLARE @SP_NAME NVARCHAR(50)
SET @SP_NAME = '_SPN'
DECLARE @ERRORID INT
SET @ERRORID = (SELECT MAX(ERRORID) FROM T_ERROR)
SET @ERRORID = (@ERRORID + 1)
INSERT INTO T_ERROR
(ERRORID,SP_NAME,ERROR_NUMBER,ERROR_SEVERITY,ERROR _STATE,ERROR_PROCEDURE,ERROR_LINE,ERROR_MESSAGE,DA TE)
VALUES
(@ERRORID,@SP_NAME,ERROR_NUMBER(),ERROR_SEVERITY() ,ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERRO R_MESSAGE(),GETDATE())
-- TRANSACTION CONTROL FOR ROLLBACK
IF (XACT_STATE()) = -1
BEGIN
SELECT
-1 AS ERROR_FLAG,
ERROR_MESSAGE() AS MESSAGE_FLAG
ROLLBACK TRANSACTION;
END;
-- TRANSACTION CONTROL FRO COMMIT
IF (XACT_STATE()) = 1
BEGIN
SELECT
1 AS ERROR_FLAG,
ERROR_MESSAGE() AS MESSAGE_FLAG
COMMIT TRANSACTION;
END;
END CATCH;
END
نظر شما در رابطه با این کنترل تراکنش چیه درسته که این طوری استفاده کنم
و ثانیا به نظر اساتید
در کدام مورد باید تراکنش رعایت بشه
select
insert
update
delete
و یا تمام موارد
و سوال بعدی اینکه هزینه زمانی کنترل خطا و تراکنش در sql server چقدره زیاد بالا نیست ؟
با تشکر
یا علی