› Fóruns › SQL e PL/SQL › Função para retornar campo › Função para retornar campo
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>