我试图编写一个删除客户的Sybase ASE(15)存储过程。由于“外键约束冲突”,DELETE可能会失败,在这种情况下,存储过程应回滚事务并返回。正常处理外键约束违规的Sybase ASE SP
CREATE PROCEDURE dbo.spumb_deleteCustomer @customertodelete int AS BEGIN
BEGIN TRANSACTION TRX_UMBDELCUSTOMER
DELETE CREDITCARDS WHERE CUSTOMERID = @customertodelete
DELETE CUSTOMER_SELECTION_MAP WHERE CUSTOMERID = @customertodelete
DELETE CUSTOMERS WHERE ID = @customertodelete
SELECT @rcnt = @@ROWCOUNT
IF (@rcnt <> 1) BEGIN
PRINT 'FAILED TO DELETE CUSTOMER'
ROLLBACK TRANSACTION TRX_UMBDELCUSTOMER
RETURN
END
COMMIT TRANSACTION TRX_UMBDELCUSTOMER
END
在游标中运行此SP时,执行会在第一个无效DELETE后中止。我该如何让光标继续(或者说,SP不会引发错误)?
谢谢,西蒙