25.02.2004, 08:49 | #1 |
Участник
|
Как убрать /*+ First_Rows */
делаю следующую связку datasource'ов:
PHP код:
База данных на Oracle. Можно ли как-то программно избавиться от /*+ FIRST_ROWS*/ в query.
__________________
Дмитрий |
|
15.03.2004, 10:54 | #2 |
Участник
|
А то же самое, написанное на базе с Microsoft SQL Server, работает нормально.
/*+ FIRST_ROWS*/ не добавляется и запрос корректно возвращает нужные записи. Напрашивается вывод что под Oracle запросы с ExistJoin лучше не писать.
__________________
Дмитрий |
|
16.03.2004, 09:26 | #3 |
Участник
|
Попробуй объединить таблицы UserGroupList и RDJournalUserGroup по типу INNER JOIN. На конечный результат это не должно повлиять. Т.е. теоретически должно получится что-то вроде:
UserInfo EXISTS (UserGroupList INNER JOIN RDJournalUserGroup) Если в Query более одного объединения отличного от INNER JOIN, то результат как правило получается непредсказуемый. Причем желательно это объединение подключать самым последним в цепочке DataSource. |
|
16.03.2004, 09:47 | #4 |
Участник
|
Нет, не работает так.
Дело не в кол-ве Exists'ов, а в их наличии. Возможно даже если связь Exists будет на втором месте после Inner ошибки подобного рода останутся.. Надо будет проверить.
__________________
Дмитрий |
|
16.03.2004, 14:13 | #5 |
Участник
|
Привет!
Для Oracle8 есть галка специальная в конфигурационной утилите (на закладке Oracle) - Special First Rows Fix. Вот она-то и убирает данный хинт. А на MS SQL такой подсказки, конечно, нет - вот и не подставляется. А лучше переписать запрос, по-моему...
__________________
С уважением, Андрей Беседин |
|
16.03.2004, 14:38 | #6 |
Участник
|
Да, если эту галочку выставить, то всё нормально работает.
Правда в этом случае FIRST_ROWS нигде не появится. Несколько жестоко. Надо было просто покопаться в "Technical Information. Setting Up Oracle8". А на самом деле я этот запрос уже давно переписал по-другому, без ExistsJoin'ов.
__________________
Дмитрий |
|