Preciso criar uma função para retornar um campo de uma tabela para o meu insert - alguém pode me dar uma dica? Fiz com esse cursor v_ClassesRecord.Dt_Inicio, --DT_INICIO ..- mas ele já faz diretamente o update - sendo que existem as datas de inicio de vigência para cada pfj_codigo.
Código:
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;
create or replace function minha_funcao (vparametro number) return number is
retorno number;
begin
select xxx
into retorno
from tabela
where xx2 = vparametro;
return retorno;
end;
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.
Código:
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;