Ultima Linha do Cursor

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
TBou
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 136
Registrado em: Qui, 05 Ago 2004 9:33 am
Localização: Campo Grande - MS
Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Eu tenho um Cursor de Dados carregado a partir de Uma select
um tanto pesado,
a principio eu rodo o loop 1º com um count e depois eu rodo ele novamente fazendo os procedimentos internos e mostrando na tela a porcentagem de execução.
mas desta forma duplica o tempo de execuçao(baianagem).

preciso saber ser tem alguma função do Cursor que retorna o numero de linhas que este irá me retornar.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

infelizmente, só contando... :-(
charlesmafra
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qui, 19 Ago 2004 9:45 am
Localização: Angola
Contato:
Charles Mafra
Oracle Developer

se sua versão do oracle for 9 ou superior, você pode no seu cursor incluir uma coluna com o total de linhas... por exemplo...

Selecionar tudo

cursor empresa is
select cod_empresa, nom_empresa, count(*) over () as total_De_registros
from empresa
where etc...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Olá charlesmafra

Mandou bem!

Só que esse count(*) over () também funciona no 8i. Mas, infelizmente, é uma função analítica que só tem no banco Enterprise Edition. No Standard Edition não funciona!
Avatar do usuário
leobbg
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Sex, 29 Out 2004 10:25 am
Localização: PORTO ALEGRE - RS
Leo BBG Consultor Oracle

Bah, faz tempo q não entro no forum ein.. bom carinha, para não precisar abrir trocentas vezes esse cursor utiliza o esquema a baixo que ta feito e tu pode continuar utilizando as outras colunas numa boa.

Selecionar tudo

Select last_value( COLUNA ) over()
,         COLUNA
,         COLUNA2
,         COLUNA3
FROM  TABELA
Abraço! :wink:
Simone Isabela
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Ter, 02 Fev 2010 7:20 am
Localização: Belo Horizonte - MG

Finalmente achei um tópico sobre isso!

Das duas formas funcionaram no Oracle 10g:

Selecionar tudo

select last_value(rownum) over() as total, campos  from tabela

Selecionar tudo

select count(*) over() as total, campos  from tabela
Obrigada pessoal!
Responder
  • Informação