Realmente não me expressei direito, mas se notar no exemplo que expus, declarei uma variável como NUMBER e o campo da query que irá trazer o valor é um VARCHAR2, ou seja, são tipos diferentes. Mas enfim, trazer a linha que deu erro em qualquer situação, tentarei citar outro exemplo, rs... sem queries: 1 declare 2 num1 varchar2(1); 3 num2 number; 4 total number; 5 begin 6 num1 := a; 7 num2 := 2; 8 total := num1 + num2; 9 dbms_output.put_line(total); 10* end; SQL> / num1 := a; * ERRO na linha 6: ORA-06550: linha 6, coluna 12: PLS-00201: o identificador 'A' deve ser declarado ORA-06550: linha 6, coluna 4: PL/SQL: Statement ignored
jlchiappa <[EMAIL PROTECTED]> escreveu: Esse exemplo foi meio infeliz, pois um SELECT ** nunca ** vai dar erro numa linha só (a não ser em casos de queda da conexão com o banco, corrupt block, FGA com problemas, coisas eventuais e raras do tipo). Com um SELECT o que acontece é que OU ele não achou ninguém e deu no-data-found OU ele trouxe as linhas, imagino que o que vc quer é fazer um DML pra CADA LINHA retornada pelo SELECT, aí sim vai ser processado um comando pra cada linha, tem sentido se falar em linha do erro , tipo : declare v_codigo number; begin for r in (select nome, rowid rowid_da_tab from tabela where codigo = 1) loop -- Begin insert into tabela .. where codigo = r.nome; exception when others then dbms_output.put_line(sqlerrm || ' na linha ' || r.rowid_dat_tab); End; end loop; end; ==>> Isso responde à pergunta em questão, mas fica o aviso, manipulações do tipo PREFERENCIALMENTE devem ser (pensando em performance) feitas em SQL diretamente, e vc captura as linhas com erros via tabela de exceptions, como mostrado em http://asktom.oracle.com/pls/ask/f? p=4950:8:::::F4950_P8_DISPLAYID:4274289639999, se for um erro "coberto" por constraints (como NULLs, PKs/UK violadas, FK sem pai, etc). []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Fabio Quirino escreveu > > Galera, > > Existe algum jeito de tratar um determinado erro, porém, exibir a linha que deu um erro no momento da execução? > > declare > v_codigo number; > begin > select nome > into v_codigo > from tabela > where codigo = 1; > exception > when others then > dbms_output.put_line(sqlerrm || ); > end; > > > Fabio Quirino > MSN: [EMAIL PROTECTED] > ICQ: 147482462 > > --------------------------------- > Yahoo! doce lar. Faça do Yahoo! sua homepage. > > [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/ --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos Fabio Quirino MSN: [EMAIL PROTECTED] ICQ: 147482462 --------------------------------- Yahoo! doce lar. Faça do Yahoo! sua homepage. [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/ --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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