【正文】
@ID = (SELECT MAX(GoodsID) FROM Goods) SELECT @ReturnValue = 0 END ELSE IF @ErrNo = 2627 違反唯一約束 7 BEGIN ROLLBACK TRANSACTION 遇到錯(cuò)誤則回滾事務(wù) SELECT @ReturnValue = 3 RETURN END ELSE 其他未知錯(cuò)誤 BEGIN ROLLBACK TRANSACTION 遇到 錯(cuò)誤則回滾事務(wù) SELECT @ReturnValue = 1 RETURN END COMMIT TRANSACTION 提交事務(wù) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO 刪除一條商品信息 /*刪除一條商品信息,輸出執(zhí)行 結(jié)果 */ CREATE PROC ( @GoodsID int, 商品編號(hào) @ReturnValue int OUTPUT 執(zhí)行結(jié)果( VB組件的自定義枚舉值) ) AS DECLARE @ErrNo int 保存錯(cuò)誤號(hào) BEGIN TRANSACTION 開始事務(wù) /*驗(yàn)證是否存在當(dāng)前商品編號(hào),若否則不能刪除 */ DECLARE @ExistID bit EXEC ExistByID 39。Goods39。, 39。GoodsID39。, @GoodsID, @ExistID OUTPUT IF @ExistID = 0 當(dāng)前商品編號(hào)不存在 BEGIN ROLLBACK TRANSACTION 回滾事務(wù) SELECT @ReturnValue = 2 返回 VB組件的自定義枚舉值 RETURN 結(jié)束存儲(chǔ)過程 END /*手動(dòng)維護(hù)數(shù)據(jù)完整性的代碼 */ EXEC ExistByID 39。Buy39。, 39。BuyID39。, @GoodsID, @ExistID OUTPUT IF @ExistID = 1 BEGIN 8 ROLLBACK TRANSACTION SELECT @ReturnValue = 3 RETURN END /*驗(yàn)證銷售信息是否包含當(dāng)前商品,若是則不能刪除 */ EXEC ExistByID 39。Sale39。, 39。SaleID39。, @GoodsID, @ExistID OUTPUT IF @ExistID = 1 BEGIN ROLLBACK TRANSACTION SELECT @ReturnValue = 3 RETURN END /*刪除記錄 */ DELETE FROM Goods WHERE GoodsID = @GoodsID 記錄當(dāng)前的錯(cuò)誤號(hào) SELECT @ErrNo = @@ERROR /*輸出參數(shù) */ IF @ErrNo = 0 沒有發(fā)生錯(cuò)誤 SELECT @ReturnVal