Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Adauto Junior_64247

Trigger Oracle não funciona no Delphi 7

Recommended Posts

Pessoa preciso de ajuda, seguinte criei uma trigger no oracle que antes de inserir o registro insere um numero sequencial em outra tabela ou em uma tabela de log caso de erro. Até ai blz a trigger esta perfeita e quando dou um insert pelo banco funciona perfeito. Porém quando dou insert pela aplicaçao delphi a inserção na tabela de controle ou no log não funciona. porém eu sei que a trigger esta sendo executada pois antes da inserção ela pega um valor de sequencia.

 

alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

comita sim, parece que a trigger não consegue inserir dados na tabela vou colar a trigger aqui.

 

CREATE OR REPLACE TRIGGER TRG_SSP023
BEFORE INSERT
ON SSP023
REFERENCING OLD AS OLD NEW AS NEW
for each row
DECLARE
vnumbancario varchar2(100);
drf integer;
PRAGMA AUTONOMOUS_TRANSACTION;
begin
select sq_ssp023.nextval
into drf
from dual;
:NEW.DRFCODIGO := drf;
for countdis in 0..1000000000 loop
begin
IF (:NEW.DRFBANCO is not null ) AND ( :NEW.DRFNUMBANCARIO is not null) THEN
--DBMS_OUTPUT.PUT_LINE(:NEW.DRFBANCO);
INSERT INTO SSP607A (CONCCONUMERO,CONDRFCODIGO,CONDRFNUMBANCARIO,CONCCOBANCO)
VALUES(:NEW.DRFCONTABOLETO,drf,:NEW.DRFNUMBANCARIO,:NEW.DRFBANCO);
commit;
select condrfnumbancario into vnumbancario from ssp607a where condrfcodigo = drf;
--DBMS_OUTPUT.PUT_LINE('passou');
:NEW.DRFNUMBANCARIO :=vnumbancario;
EXIT WHEN 1=1;
END IF;
EXCEPTION
when others then
null;
end;
end loop;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retire esta linha :

 

 

PRAGMA AUTONOMOUS_TRANSACTION

Compartilhar este post


Link para o post
Compartilhar em outros sites

então ai talvez seja minha burrice em ação eu não achei outra maneira de fazer isso , eu preciso que essa trigger tente inserir na ssp607a e caso de exception tente inserir de novo, se eu nao coloco no for ele para as tentativas na primeira entrada no exception. desse jeito ele tenta inserir na ssp607a , caso consigo para o for.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso conseguiu achar a resposta para seu problema,mude o topico para "Resolvido", isso ajuda a evitar futuras respostas,e a desorganização do forum.

 

Até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Daniel Jose Sobrinho
      Olá, eu tenho um memo em Delphi com as seguintes linhas
       
      CALDO DE GALINHA
      LEMON PEPPER
       
      Preciso que fique com 10 ponto e virgula, já contando os que vão estar no espaço em branco assim:
       
      CALDO;DE;GALINHA;;;;;;;;
      LEMON;PEPPER;;;;;;;;;
       
      Pra substituir os espaços em branco já usei o stringreplace e funcionou corretamente:
       
      memo1.text := StringReplace(memo1.text,',',';',[rfReplaceAll]);
    • Por dfoliveira82
      Bom dia senhores,
       
      sou novo no Oracle, antes trabalhava com SQL SERVER, e me deparei com algo que ja estou a horas tentando solucionar mas nao consegui.
      Nessa Trigger que vou postar, quando mando compilar ela, fala que esta faltando uma virgula, apos o values, mas nao precisa dela e nao acho onde pode ser essa virgula faltante.
      CREATE OR REPLACE TRIGGER JOBS_CL_INSERE_USUARIO AFTER INSERT OR UPDATE OF EXPORTADA_AVA ON SITE_USUARIOS REFERENCING NEW AS NEW BEGIN INSERT INTO BLACKBEAN.TBL_USERS VALUES (NULL, 'INSERT', NULL, 'db', '0', '0', '0', TO_CHAR(:NEW.CPF), MD5(:NEW.CPF||'port@l'), TO_CHAR(:NEW.CPF), SUBSTRING(:NEW.NOME, 1, INSTR(:NEW.NOME, ' ')-1), SUBSTRING(:NEW.NOME, INSTR(:NEW.NOME, ' ')+1, LEN(:NEW.NOME)), 'email@email.com', NULL, NULL, DATE_TO_UNIX_TS(SYSDATE), NULL, NULL); END; / Se alguem puder me ajudar agradeceria.
    • Por Carlos Antoliv
      Senhores, bom dia.
       
      tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
      consigo fazer isso com INSERT, depois do UPDATE.
       
      Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
       
      Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?
       
      Alguém poderia dissertar sobre isso ?
      Vlw..abço
    • Por asacap1000
      Olá galera estou quebrando a cabeça aqui e não sei mais o que fazer. Estamos migrando nossa intranet que estava desatualizada demais e estamos colocando toda ela em php7.3.
      Dentro desse sistema temos varias consultas que são realizadas no Oracle. As consultas estão ocorrendo 100% mas ao chegar na plataforma de relatórios travou tudo. Não consegui acertar o meio de consultar por período, já utilizei "to_date, to_char, trunc" e nada. Interessante que no PLSQL o to_date funciona certo
      SELECT DISTINCT TO_DATE(IO.TIME_ARRIVAL)
        FROM IN_OUT IO
       WHERE TO_DATE(IO.TIME_ARRIVAL) BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    04/11/2021
      2    18/11/2021
      3    17/11/2021
      4    14/11/2021
      5    22/11/2021
      6    08/11/2021
      7    11/11/2021
      8    13/11/2021
      9    09/11/2021
      10    10/11/2021
      11    05/11/2021
      12    19/11/2021
      13    15/11/2021
      14    03/11/2021
      15    06/11/2021
      16    23/11/2021
      17    01/11/2021
      18    02/11/2021
      19    16/11/2021
      20    20/11/2021
      21    12/11/2021
      22    21/11/2021
       
      Se eu utilizar ele ignora a data que estabeleci para a consulta
       TO_CHAR(IO.TIME_ARRIVAL,'DD/MM/YYYY') BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    03/07/2013
      2    05/07/2013
      3    18/06/2013
      4    21/05/2013
      5    20/05/2013
      6    12/08/2013
      7    21/08/2013
      8    23/08/2013
      9    02/09/2013
      10    12/09/2013
       
      Isso no PLSQL, no caso do PHP o to_date não funciona nem gera o relatório, e no to_char funciona mas ignorando as datas apontadas.
       
      O que dá pra  fazer pra resolver isso, tenho que finalizar essa migração até final de Dezembro e estou começando a ficar preocupado com o tempo
       
      Agradeço qualquer ajuda que vier
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.