tratando erro

12/03/2004

0

como eu trato o erro do oracle. o meu erro é quando tento apagar um registro de uma tabela que esta sendo usando em outra tabela.


se aguem sober o poder me ajudar agradeço.


Speedrob

Speedrob

Responder

Posts

13/03/2004

Rfpsatin

véio, tipo assim, você foi muito vago!

como você esta apagando? numa stored procedure, num trigger, num bloco pl/sql ou numa aplicação delphi?

em cada um desses temos o conceito de tratamento de excessao, voce pode capturar essa excessao e tratar.

Vou consedirar que vc esta tratando isso no oracle, pois aqui é um forum de oracle. numa procedure vc poderia tratar +- assim

CREATE OR REPLACE PROCEDURE TEXTO_TABELA
  IS
   ARQ UTL_FILE.FILE_TYPE;
   LINHA VARCHAR2(50);
   R1 PRJATV¬ROWTYPE;
 BEGIN
  ARQ := UTL_FILE.FOPEN(´c:\teste´,´carga.sql´,´r´);
  LOOP
    UTL_FILE.GET_LINE(ARQ,LINHA);
    R1.CD_PROJ := SUBSTR(LINHA,1,6);
    R1.CD_ATIV := TO_NUMBER(SUBSTR(LINHA,7,3));
    R1.DT_INI  := TO_DATE(SUBSTR(LINHA,10,10),´DD/MM/YYYY´);
    R1.DT_FIM  := TO_DATE(SUBSTR(LINHA,20,10),´DD/MM/YYYY´);
    INSERT INTO PRJATV (CD_PROJ, CD_ATIV, DT_INI, DT_FIM) VALUES (R1.CD_PROJ, R1.CD_ATIV, R1.DT_INI, R1.DT_FIM);
  END LOOP;

   EXCEPTION

    WHEN UTL_FILE.INVALID_PATH THEN
      RAISE_APPLICATION_ERROR(-20000,´CAMINHO INVÁLIDO´);
    WHEN UTL_FILE.INVALID_MODE THEN
      RAISE_APPLICATION_ERROR(-20001,´MODO DE USO INVÁLIDO´);
    WHEN UTL_FILE.INVALID_OPERATION THEN
      RAISE_APPLICATION_ERROR(-20002,´OPERACAO INCOMPATÍVEL´);
    WHEN NO_DATA_FOUND THEN
      COMMIT;
      UTL_FILE.FCLOSE_ALL;
 END;
/


ta vendo os blocos exception acima? é só vc detectar qual o tipo de exception ele lança e colocar ali, caso vc nao saiba pode usar o OUTHERS


espero ter ajudado.

abraço

ricardo


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar