Que versão voce está usando?

Na 10g funciona legal (inclusive eu coloquei o mesmo exemplo em

http://mportes.blogspot.com/2006/01/como-encontrar-gaps-em-uma-sequncia.html

Por isso que eu acho importante/essencial informar qual a *versão* s
dúvida está. Eu tenho trabalho direto na 10g e meus exemplos são em
10g, salvo quando na dúvida esteja especificamente a versão.

SQL> select falta
  2    from (
  3  with seq as (
  4           select level l
  5             from dual connect by level <= ( select max(x) from t )
  6  )
  7  select l, x, decode(x, null, l ) falta
  8    from seq left outer join t on ( l = x )
  9   order by 1
 10           )
 11   where falta is not null
 12  /
 
        FALTA
-------------
            2
            7
            8
            9
           11
           12
 
6 rows selected.
 
SQL> select * from v$version;
 
BANNER
------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod
PL/SQL Release 10.1.0.2.0 - Production
CORE    10.1.0.2.0      Production
TNS for Linux: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 - Production

Não tenho instalado o 9i aqui, mas com a ajuda do amigo Gari Einsfeldt
ele testou e deu retorno legal! Testa agora.


select l, x, decode(x, null, l ) falta
  from ( select l
           from (
                  select rownum l
                    from all_objects
                   where rownum <= ( select max(x) from t )
                )
       )
       left outer join t on ( l = x )
 order by 1
/

abracos,
--
Marcio Portes.
http://mportes.blogspot.com

--- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro <[EMAIL PROTECTED]>
escreveu
>
> Marcio, essa query nao retorna
> 
> ORA-01473: cannot have subqueries in CONNECT BY clause ?
> 
> 
> 
> On 1/17/06, Marcio Portes <[EMAIL PROTECTED]> wrote:
> >
> >  select *
> >    from (
> > with seq as (
> >          select level l
> >            from dual connect by level <= ( select max(x) from t )
> > )
> > select l, x, decode(x, null, l ) falta
> >    from seq left outer join t on ( l = x )
> >   order by 1
> >          )
> >   where falta is not null
> > /
> >
> > Seria um método. Segue exemplo:
> > Balise a sequencia com uma view completa e faça um outer join com sua
> > tabela. Com uma comparação simples, voce
> > encontrará os gaps.
> >
> >
> > SQL> select * from t;
> >
> >              X
> > -------------
> >              1
> >              3
> >              4
> >              5
> >              6
> >             10
> >             13
> >
> > 7 rows selected.
> >
> > SQL> with seq as (
> >    2          select level l
> >    3            from dual connect by level <= ( select max(x) from t )
> >    4  )
> >    5  select l, x, decode(x, null, l ) falta
> >    6    from seq left outer join t on ( l = x )
> >    7   order by 1
> >    8  /
> >
> >              L             X         FALTA
> > ------------- ------------- -------------
> >              1             1
> >              2                           2
> >              3             3
> >              4             4
> >              5             5
> >              6             6
> >              7                           7
> >              8                           8
> >              9                           9
> >             10            10
> >             11                          11
> >             12                          12
> >             13            13
> >
> > 13 rows selected.
> >
> >
> > criscadba wrote:
> > > Boa tarde !
> > >
> > > Os desenvolvedores usam uma sequence para preencher a pk de uma
> > > tabela, só que alguém andou com a sequence em alguns momentos e a pk
> > > da tabela, que tem que ser sequencial, ficou com furos, exemplo :
> > >
> > > protocolo_inscricao
> > > 1
> > > 3
> > > 4
> > > 5
> > > 6
> > > 10
> > > 13
> > >
> > > Há alguma função que me diga quais os números estão faltando porque
> > > foram pulados pelo avanço indevido da sequence ?
> >
> > --
> > Marcio Portes
> > http://mportes.blogspot.com
> >
> >
> >
--------------------------------------------------------------------------------------------------------------------------
> > 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
> >
> >
> >  *Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDADE
> >
<http://br.rd.yahoo.com/SIG=12fib5nru/M=387526.7663462.8697482.1588051/D=brclubs/S=2137114689:HM/Y=BR/EXP=1137553830/A=3242383/R=2/id=noscript/SIG=16fepr8g1/*http://landingstrip.dell.com/landingstrip/ls.asp?CID=10164&LID=293758&DGC=BA&DGStor=DHS&DGSite=Yahoo&Conum=BR&DURL=http://www1.la.dell.com/content/products/category.aspx/notebooks?c%3Dbr%26l%3Dpt%26s%3Ddhs>
> > ------------------------------
> > *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]<[EMAIL PROTECTED]>
> >
> >    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
> >    Serviço do Yahoo! <http://br.yahoo.com/info/utos.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/ 
--------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________
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