|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Добрый все день, прошу помощи! Пытаюсь использовать оператор with ... as как sql query в билдере и наткнулся на то что он не видит названия подзапросов определяемых через with ... as. Написал простейший селект чтобы проверить и вот что мы имеем. with q1 as ( select sysdate f1 from dual ), q2 as ( select q1.f1 f2 from q1 ) select q2.f2 f3 from q2 в sql developer отрабатывает без ошибок, а если вставить его в биледер как новое query дает ошибку ORA-00942: table oк view does not exist см. скрин Причем у меня есть пример отчета, написанного мной год назад на таких многоуровневых подзапросах, определяемых через with ... as - их там целых 7 - и ОН РАБОТАЕТ! По букве синтаксис сравнил - все тоже самое. Если оставить только один блок with ... as, а ниже обращаться к нему по названию - тоже все работает. Пожалуйста, если кто-нибудь сможет мне подсказать в чем засада буду очень признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 21:43 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Версия какая? Например Oracle Forms и Builder 6i скомпилированы с библиотеками от версии 8.0.5. Так что даже синтаксис который был 8i в Oracle Forms & Reports клиент и на сервере - отличался. Воркароунд - размещать запрос во View на сервере и использовать View. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 02:40 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, пробовал в двух версиях результат одинаков. Report Builder 11.1.2.2.0 и Report Builder 10.1.2.0.2 Если беру свой многоуровневый селект из старого отчета - билдер не находит в нем ошибки. Но по ситнтаксису он такой же! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 09:35 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Rabbit99, Занятно. Проверил на Report Builder 10.1.2.0.2. Запрос Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
без ошибок. А Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
дает ошибку. В работающем старом запросе точно подзапросы из WITH друг на друга ссылаются? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 14:34 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
в работающем старом запросе в первом подселекте выборка из одного сета таблиц, во втором - других таблиц, в третьем селект из предыдущих двух (q1 и q2), четвертом их третьего(предыдущего), в пятом из четвертого(предыдущего) и в последним из пятого(предыдущего) :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 15:24 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
да и вот такой тоже будет работать with q1 as ( select sysdate f1 from dual ) select * from q1 он почему то отказывается понимать все последующие запросы определяемые как ), q as ( только на первый, определяемый через with он не ругается ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 15:41 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Rabbit99, Для эксперимента сделал такой запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
А в v_query положил Код: plsql 1.
Выполняется нормально. А старый выполняющийся запрос, если в новый отчет засунуть, тоже ошибку не дает? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 15:59 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
да, как вложенный будет работать... я уже думаю, что придется оставить только первый подзапрос, а второй оформить как вложенный ко третьему. старый запрос если скопировать и вставить в текущий ошибок не выдает ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:15 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
va_kochnev .... А в v_query положил ... Может не мучать старечка и попытаться по максимому во View на Server Side сделать? Представляете, как потомки будут рады когда код с такими костылями в наследство получат и попытаются его править )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:15 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
ситуация такая, что не желательно создавать новые объекты в базе это как раз вопрос про наследие потомкам ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:42 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Может не мучать старечка и попытаться по максимому во View на Server Side сделать? Представляете, как потомки будут рады когда код с такими костылями в наследство получат и попытаются его править )))) Это я изучаю пределы дозволенного в Reports. На продуктив такое тащить - это извращение. В реальном запросе ведь выводится не одно поле f2, а несколько десятков и разного типа. Да я бы задолбался фиктивный запрос from dual where 1=2 с перечислением всех полей и приведением их к нужному типу для этого писать. Rabbit99 старый запрос если скопировать и вставить в текущий ошибок не выдает А можно этот работающий запрос здесь посмотреть? Для конфиденциальности можно названия реальных таблиц заменить на ТАБЛИЦА1, ТАБЛИЦА2 и т.д. Не верится, что Билдер так выборочно ошибки ищет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 17:12 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
va_kochnev, там полей еще много переименовывать придется, он довольно говорящие ) можно было бы конечно заморочиться но, самое главное, что без соответствующих объектов в базе вы никак не сможете его проверить на работоспособность А логику построения подзапросов и синтаксис я сравнивал - абсолютно в ноль ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 17:34 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Версия какая? Например Oracle Forms и Builder 6i скомпилированы с библиотеками от версии 8.0.5. Так что даже синтаксис который был 8i в Oracle Forms & Reports клиент и на сервере - отличался. И не факт, что компилятор PLSQL 10-го репортса как-то поменялся по сравнению с 6-м. Так что библиотеки 10-го клиента и новые возможности SQL для 10G - это 2 большие разницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 17:46 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
будете смяться, но теперь он ругается на первый и единственный внешний селект q1 with q1 as ( select sysdate f1 from dual ) select * from ( select q1.f1 f2 from q1 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 18:17 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Rabbit99, Ну, раз Билдер такой привередливый, тогда лучше от навороченного запроса в Билдере перейти на новые объекты в БД - вьюшки или временную таблицу для данных отчета с заполнением ее в пакетной процедуре с помощью самых модных для текущей версии БД способов. Это дешевле, чем каждый раз устраивать танцы с бубном вокруг каждого нового запроса. Потомки переживут. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 19:14 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
да нет, придется тогда конструкцию с with as заменить многоуровневыми вложенными селектами - не люблю я их - не красиво и читается не так нативно... а потомков избавлю от выяснения существования непонятных объектов в базе )) хотя странно все это... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 19:21 |
|
оператор with ... as в Oracle Report Builder SQL query
|
|||
---|---|---|---|
#18+
Rabbit99 ... а потомков избавлю от выяснения существования непонятных объектов в базе )) ... Делается другим способом - в теле вьюхи пишется 1 строка комментария: используется для разработки XX /отчета YYY Прекрасно работает с БД, где кол-во объектов БД из комплекта поставки 100 тыс и более, а самописных таблиц/вьюх/пакетов - десятки тысяч. Только там еще и именовать эти объекты нужно соответствующе. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 13:27 |
|
|
start [/forum/topic.php?fid=51&msg=40026100&tid=1877888]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 180ms |
0 / 0 |