Marcio, obrigado pela ajuda, não havia realmente pensado nisso.
Atenciosamente.
Augusto Cesar R. Costa
  ----- Original Message ----- 
  From: Marcio Portes 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, July 06, 2006 1:00 AM
  Subject: Re: [oracle_br] Dias úteis.


  connect by level não dá pra usar com a versão 8i, só 9i em diante. Na
  8i eu usava muito a all_objects porque me dá linha suficiente para a
  base, mas voce pode criar sua própria view de base com linhas
  suficientes e usar a vontade.

  Fica mais ou menos assim em 8i

  [EMAIL PROTECTED]> variable start_date varchar2(20)
  [EMAIL PROTECTED]> variable end_date   varchar2(20)
  [EMAIL PROTECTED]> exec :start_date := '10/10/2005'

  PL/SQL procedure successfully completed.


  START_DATE
  --------------------------------
  10/10/2005

  [EMAIL PROTECTED]> exec :end_date := '20/10/2005'

  PL/SQL procedure successfully completed.


  END_DATE
  --------------------------------
  20/10/2005

  [EMAIL PROTECTED]>
  [EMAIL PROTECTED]>
  [EMAIL PROTECTED]> select dt, to_char(dt,'Day') Week
    2    from (
    3      select to_date(:start_date,'dd/mm/yyyy')+rownum-1 dt
    4        from all_objects
    5       where rownum <=
    6         
to_date(:end_date,'dd/mm/yyyy')-to_date(:start_date,'dd/mm/yyyy')+1
    7    )
    8   where to_char(dt, 'd') not in (7,1)
    9  /

  DT                  WEEK
  ------------------- ---------
  10/10/2005 00:00:00 Monday
  11/10/2005 00:00:00 Tuesday
  12/10/2005 00:00:00 Wednesday
  13/10/2005 00:00:00 Thursday
  14/10/2005 00:00:00 Friday
  17/10/2005 00:00:00 Monday
  18/10/2005 00:00:00 Tuesday
  19/10/2005 00:00:00 Wednesday
  20/10/2005 00:00:00 Thursday

  9 rows selected.


  On 7/5/06, Augusto Cesar R. Costa <[EMAIL PROTECTED]> wrote:
  >
  >
  >    Pessoal, bom dia.
  >  Estou precisando de uma forma de retornar quais os dias da semana, 
excluindo os finais de semana, num determinado intervalo informado.
  >  Procurando nas mensagens antigas do grupo achei uma mensagem do nosso 
amigo Marcio Portes que funciona no Oracle9i, mas precisaria de alguma solução 
que pudesse ser utilizada na versão 8.1.6.
  >  http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/msg03672.html
  >
  >  Tentei adaptar para Oracle8i, executei no Oracle9i para ver se o retorno 
era o desejado e deu certo::
  >
  >  SQL> select * from v$version;
  >
  >  BANNER
  >  ----------------------------------------------------------------
  >  Oracle9i Edition Release 9.2.0.7.0 - Production
  >  PL/SQL Release 9.2.0.7.0 - Production
  >  CORE 9.2.0.7.0 Production
  >
  >  TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
  >  NLSRTL Version 9.2.0.7.0 - Production
  >
  >  SQL>
  >  SQL> select data.dt, to_char(dt,'day')
  >    2    from (select to_date(sysdate + 1,'dd/mm/rrrr')+level-1 dt
  >    3            from dual
  >    4            connect by level <= to_date(sysdate + 
10,'dd/mm/rrrr')-to_date(sysdate,'dd/mm/rrrr')+1) data
  >    5   where to_char(data.dt,'d') not in (1,7);
  >
  >  DT          TO_CHAR(DT,'DAY')
  >  ----------- -----------------
  >  06/07/2006  thursday
  >  07/07/2006  friday
  >  10/07/2006  monday
  >  11/07/2006  tuesday
  >  12/07/2006  wednesday
  >  13/07/2006  thursday
  >  14/07/2006  friday
  >
  >  7 rows selected
  >
  >  SQL>
  >
  >
  >  Contudo, quando executo no Oracle 8i que tenho aqui também, obtenho o erro:
  >
  >
  >  SQL> select * from v$version;
  >
  >  BANNER
  >  ----------------------------------------------------------------
  >  Oracle8i Edition Release 8.1.6.3.0 - Production
  >  PL/SQL Release 8.1.6.3.0 - Production
  >  CORE 8.1.6.0.0 Production
  >
  >  TNS for 32-bit Windows: Version 8.1.6.3.0 - Production
  >  NLSRTL Version 3.4.1.0.0 - Production
  >
  >  SQL>
  >  SQL> select data.dt, to_char(dt,'day')
  >    2    from (select to_date(sysdate + 1,'dd/mm/rrrr')+level-1 dt
  >    3            from dual
  >    4            connect by level <= to_date(sysdate + 
10,'dd/mm/rrrr')-to_date(sysdate,'dd/mm/rrrr')+1) data
  >    5   where to_char(data.dt,'d') not in (1,7);
  >
  >  select data.dt, to_char(dt,'day')
  >    from (select to_date(sysdate + 1,'dd/mm/rrrr')+level-1 dt
  >            from dual
  >            connect by level <= to_date(sysdate + 
10,'dd/mm/rrrr')-to_date(sysdate,'dd/mm/rrrr')+1) data
  >   where to_char(data.dt,'d') not in (1,7)
  >
  >  ORA-01436: CONNECT BY loop in user data
  >
  >  SQL>
  >
  >
  >  Alguém tem alguma sugestão?
  >  Atenciosamente.
  >  Augusto Cesar Rodovalho Costa
  >
  >
  >  [As partes desta mensagem que não continham texto foram removidas]
  >
  >   



  -- 
  Marcio Portes
  Material Tecnico em Portugues - http://mportes.blogspot.com
  Practical Learning Oracle
  -      http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
   

[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/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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