顧客を削除する Sybase ASE (15) ストアド プロシージャをコーディングしようとしています。「外部キー制約違反」が原因で DELETE が失敗する可能性があります。その場合、ストアド プロシージャはトランザクションをロールバックして戻る必要があります。
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 でエラーが発生しないようにするにはどうすればよいですか)。
ありがとう、サイモン