Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #93361
    Anônimo

      Pessoal,

      Preciso criar uma função para retornar um campo de uma tabela para o meu insert – alguém pode me dar uma dica? O campo é esse cursor v_ClassesRecord.Dt_Inicio, –DT_INICIO ..fiz com cursor – mas ele já faz diretamente o update – mas existem as datas de inicio de vigência.

      Code:

      l_municipio VARCHAR2(20);
      vn_recno NUMBER;

      BEGIN

      BEGIN

      FOR v_ClassesRecord IN (SELECT a.dt_inicio,a.dt_fim
      FROM synchro.cor_pessoa_vigencia a,synchro.synitf_pessoa b
      where a.dt_fim is null
      and pi_pessoa.pfj_codigo = pfj_codigo;)
      LOOP

      SELECT COUNT(pfj_codigo)
      INTO vn_recno
      FROM synchro.synitf_pessoa
      WHERE pi_pessoa.a1_cgc = cpf_cgc;

      IF vn_recno = 0 THEN

      INSERT INTO synchro.synitf_pessoa
      (pfj_codigo,
      codigo_usual,
      mnemonico,
      dt_inicio,
      dt_fim,
      )
      VALUES
      (pi_pessoa.a1_cgc, --pfj_codigo
      pi_pessoa.a1_cod, --codigo_usual
      pi_pessoa.a1_nome, --mnemonico
      pi_pessoa.a1_pessoa, --ind_fisica_juridica
      v_ClassesRecord.Dt_Inicio, --DT_INICIO
      NULL, --DT_FIM "
      );

      ELSE
      UPDATE synchro.synitf_pessoa
      SET pfj_codigo = pi_pessoa.a1_cgc,
      codigo_usual = pi_pessoa.a1_cod,
      mnemonico = pi_pessoa.a1_nreduz,
      ind_fisica_juridica = pi_pessoa.a1_pessoa,
      dt_inicio = trunc(sysdate),
      dt_fim = trunc(sysdate),
      where trim(cpf_cgc) = TRIM(pi_pessoa.a1_cgc);

      END IF;
      END LOOP;

      #93371
      Avatar de fsitjafsitja
      Participante

        Não entendi o que você quer… o código postado está funcionando?

        Se está funcionando, o que você precisa?

        Se não está, qual o erro?

        #93372
        Anônimo

          Desculpe – não fui muito claro na minha explanação do que eu preciso – seria o seguinte a função abaixo que está funcionando – o que preciso fazer é inserir o resultado dela em um campo no insert que é o próximo código que coloquei de exemplo.

          Code1
          CREATE OR REPLACE FUNCTION cor_vigencia (vigencia_pfj_codigo_in
          IN synchro.cor_pessoa_vigencia.pfj_codigo%TYPE)
          RETURN synchro.cor_pessoa_vigencia.dt_inicio%TYPE
          IS
          v_dt_inicio synchro.cor_pessoa_vigencia.dt_inicio%TYPE;
          BEGIN
          SELECT dt_inicio
          INTO v_dt_inicio
          FROM synchro.cor_pessoa_vigencia
          WHERE pfj_codigo = vigencia_pfj_codigo_in
          and dt_fim is null;

          RETURN v_dt_inicio;
          

          EXCEPTION
          WHEN NO_DATA_FOUND
          THEN
          /* Retorna o registro. */
          RETURN v_dt_inicio;
          END cor_vigencia;

          Code2

          INSERT INTO synchro.synitf_pessoa
          (pfj_codigo,
          codigo_usual,
          mnemonico,
          dt_inicio,
          dt_fim,
          )
          VALUES
          (pi_pessoa.a1_cgc, --pfj_codigo
          pi_pessoa.a1_cod, --codigo_usual
          pi_pessoa.a1_nome, --mnemonico
          pi_pessoa.a1_pessoa, --ind_fisica_juridica
          v_ClassesRecord.Dt_Inicio, --DT_INICIO
          NULL, --DT_FIM "
          );

            ELSE 
              UPDATE synchro.synitf_pessoa 
                 SET pfj_codigo               = pi_pessoa.a1_cgc, 
                     codigo_usual             = pi_pessoa.a1_cod, 
                     mnemonico                = pi_pessoa.a1_nreduz, 
                     ind_fisica_juridica      = pi_pessoa.a1_pessoa, 
                     dt_inicio                = trunc(sysdate), 
                     dt_fim                   = trunc(sysdate), 
              where  trim(cpf_cgc)          = TRIM(pi_pessoa.a1_cgc); 
          
            END IF; </code>
          

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