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

 


Responder a