使用 @@ERROR





DECLARE @errnum AS int;
BEGIN TRAN;
SET IDENTITY_INSERT Production.Products ON;
INSERT INTO Production.Products(productid, productname, supplierid, categoryid, unitprice, discontinued)
    VALUES(1, N'Test1: Ok categoryid', 1, 1, 18.00, 0);
SET @errnum = @@ERROR; 
IF @errnum <> 0 -- Handle the error
    BEGIN 
        PRINT 'Insert into Production.Products failed with error ' + CAST(@errnum AS VARCHAR);
    END
复制代码
复制代码
DECLARE @errnum AS int;
BEGIN TRAN;
    SET IDENTITY_INSERT Production.Products ON;
    -- Insert #1 will fail because of duplicate primary key
    INSERT INTO Production.Products(productid, productname, supplierid, categoryid,     unitprice, discontinued)
        VALUES(1, N'Test1: Ok categoryid', 1, 1, 18.00, 0);
    SET @errnum = @@ERROR;
    IF @errnum <> 0
        BEGIN 
            IF @@TRANCOUNT > 0 ROLLBACK TRAN;
            PRINT 'Insert #1 into Production.Products failed with error ' + CAST(@errnum AS VARCHAR);
        END; 
    -- Insert #2 will succeed
    INSERT INTO Production.Products(productid, productname, supplierid, categoryid,     unitprice, discontinued)
        VALUES(101, N'Test2: Bad categoryid', 1, 1, 18.00, 0);
    SET @errnum = @@ERROR;
    IF @errnum <> 0
        BEGIN 
            IF @@TRANCOUNT > 0 ROLLBACK TRAN;
            PRINT 'Insert #2 into Production.Products failed with error ' + CAST(@errnum AS VARCHAR);
        END; 
    SET IDENTITY_INSERT Production.Products OFF;
    IF @@TRANCOUNT > 0 COMMIT TRAN;
-- Remove the inserted row
DELETE FROM Production.Products WHERE productid = 101;
PRINT 'Deleted ' + CAST(@@ROWCOUNT AS VARCHAR) + ' rows';
复制代码
DECLARE @errnum AS int;BEGIN TRAN;SET IDENTITY_INSERT Production.Products ON;INSERT INTO Production.Products(productid, productname, supplierid, categoryid, unitprice, discontinued)    VALUES(1, N'Test1: Ok categoryid', 1, 1, 18.00, 0);SET @errnum = @@ERROR; IF @errnum <> 0 -- Handle the error    BEGIN         PRINT 'Insert into Production.Products failed with error ' + CAST(@errnum AS VARCHAR);    END
复制代码
复制代码
DECLARE @errnum AS int;BEGIN TRAN;    SET IDENTITY_INSERT Production.Products ON;    -- Insert #1 will fail because of duplicate primary key    INSERT INTO Production.Products(productid, productname, supplierid, categoryid,     unitprice, discontinued)        VALUES(1, N'Test1: Ok categoryid', 1, 1, 18.00, 0);    SET @errnum = @@ERROR;    IF @errnum <> 0        BEGIN             IF @@TRANCOUNT > 0 ROLLBACK TRAN;            PRINT 'Insert #1 into Production.Products failed with error ' + CAST(@errnum AS VARCHAR);        END;     -- Insert #2 will succeed    INSERT INTO Production.Products(productid, productname, supplierid, categoryid,     unitprice, discontinued)        VALUES(101, N'Test2: Bad categoryid', 1, 1, 18.00, 0);    SET @errnum = @@ERROR;    IF @errnum <> 0        BEGIN             IF @@TRANCOUNT > 0 ROLLBACK TRAN;            PRINT 'Insert #2 into Production.Products failed with error ' + CAST(@errnum AS VARCHAR);        END;     SET IDENTITY_INSERT Production.Products OFF;    IF @@TRANCOUNT > 0 COMMIT TRAN;-- Remove the inserted rowDELETE FROM Production.Products WHERE productid = 101;PRINT 'Deleted ' + CAST(@@ROWCOUNT AS VARCHAR) + ' rows';
复制代码
使用 XACT_ABORT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值