вторник, 1 февраля 2011 г.

Как заставить работать lateral в oracle

ANSI SQL оператор lateral аналогичнен конструкции TABLE в Oracle.
Но просто так он не работает:
sps@v-pc-dev-3>SELECT *
2 FROM dual d1,
3 lateral (
4 SELECT * FROM dual d2 WHERE d2.dummy = d1.dummy
5 )
6 WHERE d1.dummy = 'X';
lateral (
*
ошибка в строке 3:
ORA-00933: SQL command not properly ended

Внимание на условие d2.dummy = d1.dummy внутри lateral.

Но
sps@v-pc-dev-3>alter session set events '22829 trace name context forever';

Сеанс изменен.

sps@v-pc-dev-3>SELECT *
2 FROM dual d1,
3 lateral (
4 SELECT * FROM dual d2 WHERE d2.dummy = d1.dummy
5 )
6 WHERE d1.dummy = 'X';

D D
- -
X X

1 строка выбрана.

Комментариев нет: