Resolvi o negócio, podem esquecer, valeu.
Roberto Amorim escreveu: > Tenho uma procedure que pode copiar ou mover registro. A pk é composta > de três campos. Na procedure passo os trÊs campos de origem (ini) e os > três de destino (fim). Porém quando mando copiar dá um erro de unique > constraint em correção de valores, o que é estranho, pois estou tentando > copiar um processo que só tem um registro nesta tabela. Enfim se > consulto a tabela de correçaõ o registro fim não existe, se tento rodar > a procedure, dá erro de unique constraint. Está me faltando ve ro que? > Roberto > Oracle 8 > > create or replace procedure prgrp_mover_processo(p_cd_emp_ini in > number, > p_cd_fil_ini in > number, > p_cd_processo_ini in > number, > p_cd_emp_fim in > number, > p_cd_fil_fim in > number, > p_cd_processo_fim in > number, > p_copiar_mover in > varchar2) is > begin > -- Aqui copia ao processo, registro pai > begin > insert into e0238_processos > (d0002_cd_emp, > d0004_cd_fil, > d0238_cd_processo, > d0232_cd_area, > d0231_cd_org) > select p_cd_emp_fim, > p_cd_fil_fim, > p_cd_processo_fim, > d0232_cd_area, > d0231_cd_org > from e0238_processos > where e0238_processos.d0002_cd_emp = p_cd_emp_ini and > e0238_processos.d0004_cd_fil = p_cd_fil_ini and > e0238_processos.d0238_cd_processo = p_cd_processo_ini; > exception > when others then > raise; > end; > -- Correção de Valores move ou copia os registros da tabela filha > if p_copiar_mover = 'C' then > begin > insert into e1516_correcao_valores > (d0002_cd_emp, > d0004_cd_fil, > d0238_cd_processo, > d1516_cd_indice, > d1516_incidencia, > d1516_data_ini, > d1516_data_fim, > d1516_valor_indice, > d1516_seg_indice) > select p_cd_emp_fim, > p_cd_fil_fim, > p_cd_processo_fim, > d1516_cd_indice, > d1516_incidencia, > d1516_data_ini, > d1516_data_fim, > d1516_valor_indice, > d1516_seg_indice > from e1516_correcao_valores > where d0002_cd_emp = p_cd_emp_ini and > d0004_cd_fil = p_cd_fil_ini and > d0238_cd_processo = p_cd_processo_ini; > exception > when others then > raise; > end; > else > begin > update e1516_correcao_valores > set d0002_cd_emp = p_cd_emp_fim, > d0004_cd_fil = p_cd_fil_fim, > d0238_cd_processo = p_cd_processo_fim > where d0002_cd_emp = p_cd_emp_ini and > d0004_cd_fil = p_cd_fil_ini and > d0238_cd_processo = p_cd_processo_ini; > exception > when others then > raise; > end; > end if; > -- Após passar todo o processo para nova localização deve-se apaga-lo na > localização antiga caso a opção seja mover. > if p_copiar_mover = 'M' then > begin > delete from e0238_processos > where e0238_processos.d0002_cd_emp = p_cd_emp_ini and > e0238_processos.d0004_cd_fil = p_cd_fil_ini and > e0238_processos.d0238_cd_processo = p_cd_processo_ini; > exception > when others then > raise; > end; > end if; > commit; > exception > when others then > raise; > end prgrp_mover_processo; > > > Descrição da tabela de correção: > create table E1516_CORRECAO_VALORES > ( > D0002_CD_EMP NUMBER(2) not null, > D0004_CD_FIL NUMBER(3) not null, > D0238_CD_PROCESSO NUMBER(6) not null, > D1516_CD_INDICE NUMBER(2) not null, > D1516_INCIDENCIA VARCHAR2(1), > D1516_DATA_INI DATE, > D1516_DATA_FIM DATE, > D1516_VALOR_INDICE NUMBER(7,4), > D1516_SEG_INDICE NUMBER(7,4) > ) > > alter table E1516_CORRECAO_VALORES > add constraint PKGRP_1516_CORRECAO_VALORES > primary key (D0002_CD_EMP,D0004_CD_FIL,D0238_CD_PROCESSO, D1516_CD_INDICE) > > alter table E1516_CORRECAO_VALORES > add constraint FKGRP_1516_PROCESSOS > foreign key (D0002_CD_EMP,D0004_CD_FIL,D0238_CD_PROCESSO) > references E0238_PROCESSOS (D0002_CD_EMP,D0004_CD_FIL,D0238_CD_PROCESSO); > > > > >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure >> » Scripts » Tutoriais acesse: >> http://www.oraclebr.com.br/codigo/ListaCodigo.php >> > -------------------------------------------------------------------------------------------------------------------------- > >> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >> responsabilidade de seus remetentes. >> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > -------------------------------------------------------------------------------------------------------------------------- > >> O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >> http://www.oraclebr.com.br/ >> > ------------------------------------------------------------------------------------------------------------------------ > > Links do Yahoo! Grupos > > > > > >