ITEMNF.CODPEC,
             ITEMNF.CODPEC,

No segundo cursor voce está duplicando os campos acima.

Voce não perguntou, mas mesmo assim... por que está colocando to_char(
nf.datalt, 'DD/MM/YYYY') na cláusula WHERE?? Se tiver um índice normal ai,
está inutilizado! E outra, está comparando CHAR com DATES? Se campo já é
date??? Não entendo!!

Outra dica, pelo que vi na sua lógica, não é preciso cursores. Use cursor
quando for extritamente necessário, insert de select é o que voce precisa -
INFINITAMENTE mais rápido e escalável.

On 2/16/06, Adalberto Sousa Monteiro <[EMAIL PROTECTED]> wrote:
>
> Boa noite pessoal,
> Estou criando a procedure abaixo e esta me dando a seguinte mensagem de
> erro "Apelido obrigatório na lista de cursor SELECT para evitar nomes
> duplicados de coluna" ja tentei achar o que esta errado e não consigo ....
>
>
>
> create or replace procedure proc_nfviagem(vs_datai String, vs_dataf
> String)
> as
> cursor cur_nfviagem is
>        select nf.filvia,
>               nf.nrviag,
>               nf.nrfisc,
>               nf.codrem,
>               nf.dtnota,
>               nf.codcon,
>               nf.coddes,
>               nf.coddev,
>               nf.filctr,
>               nf.nrctrc,
>               nf.serie,
>               (nvl(nf.vrnota,0)) vrnota,
>               nf.situac,
>               (nvl(nf.pesom3,0)) pesom3,
>               (nvl(nf.pesobr,0)) pesobr,
>               (nvl(nf.pesolq,0)) pesolq,
>               (nvl(nf.qtpeca,0)) qtpeca
>          from logistic.afa029 nf
>         where to_char(nf.datalt, 'DD/MM/YYYY') between vs_datai and
> vs_dataf;
>
> cursor cur_itemnfviagem is
>        select ITEMNF.FILVIA,
>               ITEMNF.NRVIAG,
>               ITEMNF.NRFISC,
>               ITEMNF.CODREM,
>               ITEMNF.CODPEC,
>               ITEMNF.CODPEC,
>               ITEMNF.CODFOR,
>               ITEMNF.VRUNIT,
>               ITEMNF.VRTOT,
>               ITEMNF.QTEMBA,
>               ITEMNF.PESOLQ,
>               ITEMNF.PESOBR
>          FROM logistic.AFA030 ITEMNF,
>               (   select n.filvia,
>                          n.nrviag,
>                          n.nrfisc,
>                          n.codrem
>                     from logistic.afa029 n
>                    where to_char(n.datalt, 'DD/MM/YYYY') between vs_datai
> and vs_dataf
>               ) notas
>         where ITEMNF.FILVIA = notas.filvia
>           and ITEMNF.NRVIAG = notas.nrviag
>           and ITEMNF.CODREM = notas.codrem
>           and ITEMNF.NRFISC = notas.nrfisc;
>
> reg_nfviagem      cur_nfviagem%rowtype;
> reg_itemnfviagem  cur_itemnfviagem%rowtype;
>
> begin
>
>
>    for reg_nfviagem in cur_nfviagem loop
>    begin
>        insert into NFVIAGEM ( CD_FILVIA,
>                               NR_VIAGEM,
>                               NR_NF,
>                               CD_REMETENTE,
>                               DT_NF,
>                               CD_CONSIGNATARIO,
>                               CD_DESTINATARIO,
>                               CD_DEVEDOR,
>                               CD_FILCTRC,
>                               NR_CTRC,
>                               NR_SERIECTRC,
>                               VR_NF,
>                               FL_SITUACAO,
>                               QT_PESOM3,
>                               QT_PESOBRT,
>                               QT_PESOLIQ,
>                               QT_EMBALAGEM
>                             )
>                      values ( reg_nfviagem.filvia,
>                               reg_nfviagem.nrviag,
>                               reg_nfviagem.nrfisc,
>                               reg_nfviagem.codrem,
>                               reg_nfviagem.dtnota,
>                               reg_nfviagem.codcon,
>                               reg_nfviagem.coddes,
>                               reg_nfviagem.coddev,
>                               reg_nfviagem.filctr,
>                               reg_nfviagem.nrctrc,
>                               reg_nfviagem.serie,
>                               reg_nfviagem.vrnota,
>                               reg_nfviagem.situac,
>                               reg_nfviagem.pesom3,
>                               reg_nfviagem.pesobr,
>                               reg_nfviagem.pesolq,
>                               reg_nfviagem.qtpeca
>                             );
>        exception
>           when dup_val_on_index then
>                update NFVIAGEM
>                   set FL_SITUACAO   = reg_nfviagem.situac,
>                       DT_ALTERACAO  = sysdate
>                 where CD_EMPRESA    = 1
>                   and CD_FILIAL     = 1
>                   and CD_FILVIA     = reg_nfviagem.filvia
>                   and NR_VIAGEM     = reg_nfviagem.nrviag
>                   and NR_NF         = reg_nfviagem.nrfisc
>                   and CD_REMETENTE  = reg_nfviagem.codrem;
>
>           when others then
>                rollback;
>        end;
>    end loop;
>
>    commit;
>
>    for reg_itemnfviagem in cur_itemnfviagem loop
>    begin
>        insert into ITEMNFVIAGEM ( CD_FILVIA,
>                                   NR_VIAGEM,
>                                   NR_NF,
>                                   CD_REMETENTE,
>                                   CD_PRODUTO,
>                                   DS_PRODUTO,
>                                   CD_FORNECEDOR,
>                                   VR_UNITARIO,
>                                   VR_TOTAL,
>                                   QT_EMBALAGEM,
>                                   QT_PESOBRT,
>                                   QT_PESOLIQ
>                                 )
>                          values ( reg_itemnfviagem.FILVIA,
>                                   reg_itemnfviagem.NRVIAG,
>                                   reg_itemnfviagem.NRFISC,
>                                   reg_itemnfviagem.CODREM,
>                                   reg_itemnfviagem.CODPEC,
>                                   reg_itemnfviagem.CODPEC,
>                                   reg_itemnfviagem.CODFOR,
>                                   reg_itemnfviagem.VRUNIT,
>                                   reg_itemnfviagem.VRTOT,
>                                   reg_itemnfviagem.QTEMBA,
>                                   reg_itemnfviagem.PESOLQ,
>                                   reg_itemnfviagem.PESOBR
>                                 );
>        exception
>           when dup_val_on_index then
>                update ITEMNFVIAGEM
>                   set DT_ALTERACAO  = sysdate
>                 where CD_EMPRESA    = 1
>                   and CD_FILIAL     = 1
>                   and CD_FILVIA     = reg_itemnfviagem.filvia
>                   and NR_VIAGEM     = reg_itemnfviagem.nrviag
>                   and NR_NF         = reg_itemnfviagem.nrfisc
>                   and CD_REMETENTE  = reg_itemnfviagem.codrem
>                   and CD_PRODUTO    = reg_itemnfviagem.CODPEC;
>
>           when others then
>                rollback;
>        end;
>
>    end loop;
>
>    commit;
>
>    Close cur_nfviagem;
>    Close cur_itemnfviagem;
>
> end;
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>
> --------------------------------------------------------------------------------------------------------------------------
> Atenção! As mensagens deste grupo são de acesso público e de inteira
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>
> --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
> Este Grupo recebe o apoio da SQL Magazine -
> www.devmedia.com.br/sqlmagazine
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


--
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle     -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a