Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Селект с подзапросом в Oracle 8  [new]
AndreyArtemev
Member

Откуда:
Сообщений: 777
Как-то странно в 8 версии не работает подзапрос в селекте. Причем в SQL работает, а в PL\SQL пишет
[1]: (Error): ORA-06550: line 3, column 11: PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:     ( - + mod not null others <an identifier>   ..... 

Запускаю sql навигатором

SQL:
  select (select 1 from dual) from dual

PL\SQL:
BEGIN
 for c in (
  select (select 1 from dual) from dual
 ) loop
   null;
 end loop;
END;


Это как нибудь можно обойти без join?
27 май 09, 14:29    [7234805]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
AndreyArtemev,

Обойти можно вьюхой или динамическим запросом.

P.S. В 8-ке SQL и PL\SQL это разные вещи.
27 май 09, 14:31    [7234827]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
8 != 8i, да?

А почему Вы не хотите join? Как раз джойн гораздо продуктивнее, особенно в непоследних версиях, чем скаляр.
27 май 09, 14:32    [7234829]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
AndreyArtemev
Member

Откуда:
Сообщений: 777
Join не хотелось бы, т.к. подзапрос нужен не для всех строк, а только для некоторых по условию в decode
27 май 09, 14:35    [7234850]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
Madness
Member

Откуда: Москва
Сообщений: 648
AndreyArtemev,

8.1.7
27 май 09, 14:35    [7234851]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Madness
AndreyArtemev,

8.1.7

"Извините, но по вашему запросу ничего не найдено"
27 май 09, 14:40    [7234893]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
Madness
Member

Откуда: Москва
Сообщений: 648
Andrey.L,

А это не важно, ответ там понятен и без ссылки, тема старая...
27 май 09, 14:42    [7234908]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
AndreyArtemev
Member

Откуда:
Сообщений: 777
Andrey.L,
спасибо, сделал динамически
27 май 09, 15:19    [7235220]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
AndreyArtemev
Join не хотелось бы, т.к. подзапрос нужен не для всех строк, а только для некоторых по условию в decode

А что, есть уверенность что подзапрос в вашем случае не будет вызываться для всех строк?

Делайте лучше join, чем динамически.
27 май 09, 15:34    [7235327]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
Elic
Member

Откуда:
Сообщений: 29978
__vvp_
AndreyArtemev
Join не хотелось бы, т.к. подзапрос нужен не для всех строк, а только для некоторых по условию в decode
А что, есть уверенность что подзапрос в вашем случае не будет вызываться для всех строк?
А у тебя нет?! Т.е. ты тоже не знаешь, как вычисляются выражения?
27 май 09, 15:40    [7235365]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
Elic
__vvp_
AndreyArtemev
Join не хотелось бы, т.к. подзапрос нужен не для всех строк, а только для некоторых по условию в decode
А что, есть уверенность что подзапрос в вашем случае не будет вызываться для всех строк?
А у тебя нет?! Т.е. ты тоже не знаешь, как вычисляются выражения?


Да, не подумамши.
select decode(mod(level, 2), 1, s1.nextval, s1.currval)
from dual
connect by level <= 10;
27 май 09, 16:07    [7235598]     Ответить | Цитировать Сообщить модератору
 Re: Селект с подзапросом в Oracle 8  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
__vvp_
Да, не подумамши.;


Поспешил. В смысле навеяло
select decode(mod(level, 2), 1, s1.nextval, s1.currval)
  from dual
  connect by level <= 10
27 май 09, 16:09    [7235609]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить