Pular para o conteúdo
  • Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 9 anos, 4 meses atrás por Avatar de Ronnie Von Pereira LopesRonnie Von Pereira Lopes.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #107589
    Avatar de Ronnie Von Pereira LopesRonnie Von Pereira Lopes
    Participante

      Amigos Boa tarde!
      vejam se podem me ajudar, tenho a trigger abaixo feito em SQL preciso colocar a mesma para Oracle.

      SQL
      set ANSI_NULLS ON
      set QUOTED_IDENTIFIER ON
      go
      CREATE TRIGGER [ASSINATURA_DIRETORIA] ON [dbo].[TMOVAPROVA]
      FOR INSERT
      AS
      DECLARE @IDMOV INT
      DECLARE CURSORMOV CURSOR FOR
      SELECT A.IDMOV
      from tmovaprova a,TMOV b, Gusuario c
      WHERE a.IDMOV=b.idmov and a.codusuario=c.CODUSUARIO and
      b.codtmv in(‘1.1.01′,’1.1.02’) AND
      B.CAMPOLIVRE1 IS NULL
      OPEN CURSORMOV
      FETCH NEXT FROM CURSORMOV INTO @IDMOV
      WHILE @@FETCH_STATUS = 0
      BEGIN
      UPDATE TMOV SET CAMPOLIVRE1=
      + ‘Aprovador Por – ‘+
      CONVERT(VARCHAR(25),C.NOME,103)+’- Dia – ‘+
      CONVERT(VARCHAR(20),a.horarioaprovacao,103)+ ‘ as ‘ +
      convert(varchar, a.horarioaprovacao,108)
      from tmovaprova a,TMOV b, Gusuario c
      WHERE a.IDMOV=b.idmov and a.codusuario=c.CODUSUARIO and
      b.codtmv in(‘1.1.01′,’1.1.02’) AND
      B.CAMPOLIVRE1 IS NULL AND
      A.IDMOV = @IDMOV

      FETCH NEXT FROM CURSORMOV INTO @IDMOV
      END
      CLOSE CURSORMOV
      DEALLOCATE CURSORMOV

      Obrigado todos pela ajuda.

      Attachments:
      #107594
      Avatar de WenderWender
      Participante

        @Ronnie

        Segue abaixo seu T-SQL para PL/SQL conforme solicitado:

        create or replace
        trigger assinatura_diretoria
        after insert
        on tmovaprova
        begin
        declare
        cursor c_cursormov
        is
        select c.nome,a.horarioaprovacao,b.rowid
        from tmovaprova a inner join tmov b
        on a.idmov = b.idmov
        inner join gusuario c
        on c.codusuario = a.codusuario
        where b.codmov in ('1.1.01','1.1.02')
        and b.campolivre1 is null;

        v_mov c_cursormov%rowtype;
        begin
        open c_cursormov;
        loop
        fetch c_cursormov into v_mov;
        exit when c_cursormov%notfound;

        update tmov t
        set t.campolivre1 = 'Aprovador Por - '||to_char(v_mov.nome)||' - Dia - '||to_char(v_mov.horarioaprovacao, 'DD/MM/YYYY')||' as '||to_char(v_mov.horarioaprovacao, 'HH24:MM:SS')
        where rowid = v_mov.rowid;

        end loop;
        close c_cursormov;
        end;
        end;
        /

        #107596
        Avatar de Ronnie Von Pereira LopesRonnie Von Pereira Lopes
        Participante

          Nossa Amigo, ficou show demais, muitíssimo obrigado mesmo. Me ajudou demais, eu venho de 10 anos trabalhando com SQL, agora no novo emprego preciso aprender Oracle.

          Parabéns e Obrigado

          #107598
          Avatar de Ronnie Von Pereira LopesRonnie Von Pereira Lopes
          Participante

            Bom dia!

            Meu jovem desculpas incomodar , rodei a SQL e me retornou alguns erro de log, esta em anexo.
            Agradeço a ajuda

            Attachments:
            #107601
            Avatar de WenderWender
            Participante

              @Ronnie

              Me desculpe, coloquei o nome da coluna da tabela errada o erro esta aqui

              where b.codmov in ('1.1.01','1.1.02')

              Para

              where b.codtmv in ('1.1.01','1.1.02')

              Apenas revise o nome das colunas se esta da certo, outra coisa, certifique que o Schema que será criado a trigger possui permissão de select nas três tabelas e update na tabela tmov.

              Qualquer problema poste o log novamente.
              Abraços.

              #107602
              Avatar de Ronnie Von Pereira LopesRonnie Von Pereira Lopes
              Participante

                Meu Amigo Wender ficou show, fiz a alteração que você falou e deu certo, meu muito Obrigado. valeu mesmo.

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress