- Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 14 anos, 10 meses atrás por Anônimo.
-
AutorPosts
-
26 de março de 2010 às 5:43 am #93361Anô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;)
LOOPSELECT 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;26 de março de 2010 às 7:10 pm #93371fsitjaParticipanteNã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?
26 de março de 2010 às 8:29 pm #93372AnônimoDesculpe – 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>
-
AutorPosts
- Você deve fazer login para responder a este tópico.