Bom dia Galera,
Conheço pouco de PL/SQL e gostaria de saber se existe uma exception ou qualquer outro tratamento que eu possa fazer no meu script. Se falhar um DELETE quero que faça rollback em tudo, caso contrario, commit.
Por enquanto esta sem tratamento nenhum, se falhar um (retornar false na instrução), ele efetua o delete nos outros
Pesquisei no google e vi que em SQL Server tem uma variáve @@Error que identifica se ocorreu algum erro na instrução…
CREATE OR REPLACE PROCEDURE DELETE_CUSTOMER
(CUSTOMER_ID NUMBER)
AS
BEGIN
DELETE
CUSTOMERCONTACT
WHERE
CUSTOMERID = CUSTOMER_ID;
DELETE
CUSTOMERCONTRACT_LOCAL A
WHERE
A.CUSTOMERCONTRACTID IN (SELECT B.CUSTOMERCONTRACTID FROM CUSTOMERCONTRACT B WHERE B.CUSTOMERID = CUSTOMER_ID);
DELETE
CUSTOMERCONTRACT
WHERE
CUSTOMERID = CUSTOMER_ID;
DELETE
CUSTOMER
WHERE
CUSTOMERID = CUSTOMER_ID;
END;
Tentei fazer algo do tipo (bem iniciante hahahaha):
Declare
erro number (5);
Begin
Begin transaction
delete...
exception
when then
erro++;
.
.
.
end transaction;
if erro <> 0 then
rollback;
else
commit;
end if;
end;
Muito obrigado desde já pela ajuda.
Abraços