почему селект возвращает разное кол-во записей?

_Guest__1
Дата: 07.03.2007 11:17:03
Объясните явление, почему

select to_date('01012006','ddmmyyyy')-1+level
from dual 
connect by level<=to_date('01012007','ddmmyyyy')-to_date('01012006','ddmmyyyy')

возвращает 100 записей, а

select * from (
select to_date('01012006','ddmmyyyy')-1+level
from dual 
connect by level<=to_date('01012007','ddmmyyyy')-to_date('01012006','ddmmyyyy')
)

как и положено 365.

используется Oracle 9.2.0.4
Elic
Дата: 07.03.2007 11:23:19
Это одна из магий dual-а.
Надо всегда оборачивать в подзапрос/inline view.
Более того, сам по себе такой запрос не имеет никакого смысла. Смысл появляется только когда он является частью более сложного запроса.
.....
Дата: 07.03.2007 11:26:50
create table pdual as select * from pdual

select to_date('01012006','ddmmyyyy')-1+level
from pdual
connect by level<=to_date('01012007','ddmmyyyy')-to_date('01012006','ddmmyyyy')


select * from (
select to_date('01012006','ddmmyyyy')-1+level
from pdual
connect by level<=to_date('01012007','ddmmyyyy')-to_date('01012006','ddmmyyyy')
)
_Guest__1
Дата: 07.03.2007 11:32:10
.....
create table pdual as select * from pdual

select to_date('01012006','ddmmyyyy')-1+level
from pdual
connect by level<=to_date('01012007','ddmmyyyy')-to_date('01012006','ddmmyyyy')


select * from (
select to_date('01012006','ddmmyyyy')-1+level
from pdual
connect by level<=to_date('01012007','ddmmyyyy')-to_date('01012006','ddmmyyyy')
)


тогда уж create table pdual as select * from dual
andreymx
Дата: 07.03.2007 11:48:07
похоже, это магия не dual, а клиентского приложения и его особенностей
У меня в жабе (Toad) и первый запрос выдает 365 записей - предел идёт на 500 строках.
Может, это как-то связано с OCI Array Buffer size?
orawish
Дата: 07.03.2007 12:08:09
Магия - факт. От версии сервера зависит. Оборачивать (на 9i - точно) надо.
Но вот 100 - результат удивил..
Присоединен к:
Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production

SQL> select to_date('01012006','ddmmyyyy')-1+level
  2  from dual
  3  connect by level<=to_date('01012007','ddmmyyyy')-to_date('01012006','ddmmyyyy');

TO_DATE(
--------
01.01.06

SQL>
Elic
Дата: 07.03.2007 12:16:25
похоже, это магия не dual, а клиентского приложения и его особенностей
STFF cнова select rownum from dual connect by


orawish
Но вот 100 - результат удивил..
Сходи по ссылке, поймёшь откуда эта цифра :)