Duvida com 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
krespo
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 23 Jan 2009 2:57 pm
Localização: lisboa

Boas pessoal.
Eu estou com uma duvida que é a seguinte, eu quero preencher um cursor com um nome do filme e com uma contagem do nº de filmes mas depois não sei como chamar o nº dos filmes para colocar dentro de uma tabela em html.
Eu vou postar aqui o codigo para ser mais preciso

Selecionar tudo

declare
 
   cursor c_filmes is
   select  film_nome from aluguer,copia, filme
   where alug_copi_id=copi_id and copi_film_id=film_id 
   group by film_nome
   order by  (count(*)) desc;
  
  begin
  htp.p('
      <html>
      <body>
      <h2>Nº de alugueres por filme</h2>   
      <table width="100%" border="1">
      <tr>
      <th>Nome do filme</th>
      <th>Nº de vezes que foi alugado</th>
    ');
    for r_filmes in c_filmes loop
      htp.p('<tr>');
      htp.p('<td>'||r_filmes.film_nome||'</td>');
      htp.p('<td>'||r_filmes.||'</td>');
    end loop;
    htp.p('
      </table>
      </body>
      </html>
    ');
  
  end;
margaridi
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Ter, 08 Abr 2008 11:09 am
Localização: Curitiba - PR
Contato:
----------------------------
Margaridi, Marco Aurélio
www.margaridi.com

1. Você precisar incluir o contador de locações no cursor.
2. Com isso você não precisa utilizar a contagem na clausula order by (COUNT)
3. Ao invés de utilizar COUNT(*), que irá forçar uma contagem de todas as colunas, prefira utilizar COUNT(1) que irá ser mais rápido e consumirá menos recursos.

Abraço,

Selecionar tudo

declare 
  
   cursor c_filmes is 
   select  film_nome, count(1) locacoes
   from aluguer,copia, filme 
   where alug_copi_id=copi_id and copi_film_id=film_id 
   group by film_nome 
   order by  2 desc; 
  
  begin 
  htp.p(' 
      <html> 
      <body> 
      <h2>Nº de alugueres por filme</h2>    
      <table width="100%" border="1"> 
      <tr> 
      <th>Nome do filme</th> 
      <th>Nº de vezes que foi alugado</th> 
    '); 
    for r_filmes in c_filmes loop 
      htp.p('<tr>'); 
      htp.p('<td>'||r_filmes.film_nome||'</td>'); 
      htp.p('<td>'||r_filmes.locacoes||'</td>'); 
    end loop; 
    htp.p(' 
      </table> 
      </body> 
      </html> 
    '); 
  
  end; 
Avatar do usuário
fsitja
Rank: OraSauro
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

Sobre o count(*) vs count(1), eles são exatamente a mesma coisa, não há carga maior de trabalho ou desempenho diferente.
O Tom Kyte já teve várias discussões épicas a respeito no seu site AskTom. Uma delas no link abaixo:

http://asktom.oracle.com/pls/asktom/f?p ... 6159920245
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes