Inserir linha nula para verificar o comportamento das funções de agrupamento no Oracle

Como todos sabem, as funções de agrupamento não levam em consideração os atributos que estão com valor NULL nas linhas. Assim fizemos um teste para comprovar a atuação do count(*). O resultado era esperado que quando utilizassemos a função de agrupamento count(*) ele entao iria verificar que a linha estava nula e nao contabilizasse essa linha. Mas o Oracle armazena duas pseudo colunas que são: ROWID e ROWNUM, e quando executo count(*) estas colunas sao contempladas para efeito de calculo e o retorno de total de linhas inseridas com valor nulo é retornado.

SQL> create table TOTO (CODIGO NUMBER);

Tabela criada.

SQL> insert into TOTO VALUES(NULL);

1 linha criada.

SQL> /

1 linha criada.

SQL> /

1 linha criada.

SQL> /

1 linha criada.

SQL> /

1 linha criada.

SQL> select * from toto;

CODIGO
----------






SQL> select count(*) from toto;

COUNT(*)
----------
5

SQL>
SQL> select count(codigo) from toto;

COUNT(CODIGO)
-------------
0

SQL> select rowid, rownum, codigo from toto;

ROWID ROWNUM CODIGO
------------------ ---------- ----------
AAAMrXAABAAAOpaAAA 1
AAAMrXAABAAAOpaAAB 2
AAAMrXAABAAAOpaAAC 3
AAAMrXAABAAAOpaAAD 4
AAAMrXAABAAAOpaAAE 5

SQL>

Comentários

Anônimo disse…
Amiable dispatch and this enter helped me alot in my college assignement. Say thank you you on your information.