Alguém sabe uma forma eficiente de verificar se uma query retornou alguma linha ou não???
precisao fazer algo como:
se a consulta retorna alguma linha, realiza o update senao insere.
vlw abs
Como verificar se a query retornou algum valor??
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
use cursor, você pode fazer o seguinte
declare
cursor c is
select sysdate
from dual;
dt date;
begin
open c;
fetch c into dt;
if c%found then
(...)
end if;
end;
- fsitja
- Rank: OraSauro
- Mensagens: 611
- Registrado em: Seg, 19 Jan 2009 4:29 pm
- Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Se você estiver usando um select .. into .. e não tiver um cursor declarado, qualquer um dos dois jeitos funciona, dependendo do que você quer. Para cursor faz sentido usar <nomedocursor>%rowcount para saber quantas linhas ele retornou, select into vai dar sempre 1 quando voltar algo, senão é exception de qualquer jeito.
Conectado a:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set serveroutput on
SQL> declare
2 v_num number;
3 begin
4 select 1 into v_num from dual;
5 if sql%found then
6 dbms_output.put_line('Achou (found)!');
7 end if;
8 if sql%rowcount >= 1 then
9 dbms_output.put_line('Achou! (rowcount)');
10 end if;
11 end;
12 /
Achou (found)!
Achou! (rowcount)
Procedimento PL/SQL concluído com sucesso.
SQL>
- fsitja
- Rank: OraSauro
- Mensagens: 611
- Registrado em: Seg, 19 Jan 2009 4:29 pm
- Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html
OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist
sql%notfound funciona também, para testar se não retornou nada no fetch e interromper um loop usando "exit;" após testar num if por exemplo.
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Tranquilo.. na verdade, cada rotina é usada em uma situação
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes