powered by simpleCommunicator - 2.0.32     © 2024 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / оператор with ... as в Oracle Report Builder SQL query
17 сообщений из 17, страница 1 из 1
оператор with ... as в Oracle Report Builder SQL query
    #40025794
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый все день,

прошу помощи!

Пытаюсь использовать оператор 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, а ниже обращаться к нему по названию - тоже все работает.

Пожалуйста, если кто-нибудь сможет мне подсказать в чем засада буду очень признателен.
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40025837
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия какая?

Например Oracle Forms и Builder 6i скомпилированы с библиотеками от версии 8.0.5. Так что даже синтаксис который был 8i в Oracle Forms & Reports клиент и на сервере - отличался.

Воркароунд - размещать запрос во View на сервере и использовать View.
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40025868
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev, пробовал в двух версиях результат одинаков.
Report Builder 11.1.2.2.0
и
Report Builder 10.1.2.0.2

Если беру свой многоуровневый селект из старого отчета - билдер не находит в нем ошибки. Но по ситнтаксису он такой же!
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40025939
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rabbit99,
Занятно. Проверил на Report Builder 10.1.2.0.2.

Запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with q1 as (
select
sysdate f1
from dual
),
q2 as (select q1.f1 f2 from q1)
select *
from q1


без ошибок.
А
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with q1 as (
select
sysdate f1
from dual
),
q2 as (select q1.f1 f2 from q1)
select *
from q2


дает ошибку.

В работающем старом запросе точно подзапросы из WITH друг на друга ссылаются?
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40025956
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в работающем старом запросе в первом подселекте выборка из одного сета таблиц, во втором - других таблиц, в третьем селект из предыдущих двух (q1 и q2), четвертом их третьего(предыдущего), в пятом из четвертого(предыдущего) и в последним из пятого(предыдущего) :-)
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40025968
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да и вот такой тоже будет работать

with q1 as (
select
sysdate f1
from dual
)
select * from q1

он почему то отказывается понимать все последующие запросы определяемые как
),
q as (

только на первый, определяемый через with он не ругается
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40025992
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rabbit99,
Для эксперимента сделал такой запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with q1 as (
select
sysdate f1
from dual
)
,q2 as (select q1.f1 f2 from q1)
select sysdate f_2
from dual where 1=2
&v_query


А в v_query положил
Код: plsql
1.
union all select f2 from q2


Выполняется нормально.

А старый выполняющийся запрос, если в новый отчет засунуть, тоже ошибку не дает?
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026001
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, как вложенный будет работать...
я уже думаю, что придется оставить только первый подзапрос, а второй оформить как вложенный ко третьему.

старый запрос если скопировать и вставить в текущий ошибок не выдает
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026002
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
va_kochnev

....
А в v_query положил
...

Может не мучать старечка и попытаться по максимому во View на Server Side сделать?

Представляете, как потомки будут рады когда код с такими костылями в наследство получат и попытаются его править ))))
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026018
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ситуация такая, что не желательно создавать новые объекты в базе
это как раз вопрос про наследие потомкам )
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026029
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

Может не мучать старечка и попытаться по максимому во View на Server Side сделать?

Представляете, как потомки будут рады когда код с такими костылями в наследство получат и попытаются его править ))))

Это я изучаю пределы дозволенного в Reports.
На продуктив такое тащить - это извращение. В реальном запросе ведь выводится не одно поле f2, а несколько десятков и разного типа. Да я бы задолбался фиктивный запрос from dual where 1=2 с перечислением всех полей и приведением их к нужному типу для этого писать.

Rabbit99

старый запрос если скопировать и вставить в текущий ошибок не выдает

А можно этот работающий запрос здесь посмотреть?
Для конфиденциальности можно названия реальных таблиц заменить на ТАБЛИЦА1, ТАБЛИЦА2 и т.д.
Не верится, что Билдер так выборочно ошибки ищет.
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026043
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
va_kochnev, там полей еще много переименовывать придется, он довольно говорящие )
можно было бы конечно заморочиться но, самое главное, что без соответствующих объектов в базе вы никак не сможете его проверить на работоспособность
А логику построения подзапросов и синтаксис я сравнивал - абсолютно в ноль
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026048
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Версия какая?

Например Oracle Forms и Builder 6i скомпилированы с библиотеками от версии 8.0.5. Так что даже синтаксис который был 8i в Oracle Forms & Reports клиент и на сервере - отличался.

И не факт, что компилятор PLSQL 10-го репортса как-то поменялся по сравнению с 6-м. Так что библиотеки 10-го клиента и новые возможности SQL для 10G - это 2 большие разницы.
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026065
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
будете смяться, но теперь он ругается на первый и единственный внешний селект q1

with q1 as (
select
sysdate f1
from dual
)
select *
from
(
select q1.f1 f2
from q1
)
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026097
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rabbit99,
Ну, раз Билдер такой привередливый, тогда лучше от навороченного запроса в Билдере перейти на новые объекты в БД - вьюшки или временную таблицу для данных отчета с заполнением ее в пакетной процедуре с помощью самых модных для текущей версии БД способов. Это дешевле, чем каждый раз устраивать танцы с бубном вокруг каждого нового запроса.

Потомки переживут.
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026100
Rabbit99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да нет, придется тогда конструкцию с with as заменить многоуровневыми вложенными селектами - не люблю я их - не красиво и читается не так нативно...

а потомков избавлю от выяснения существования непонятных объектов в базе ))

хотя странно все это...
...
Рейтинг: 0 / 0
оператор with ... as в Oracle Report Builder SQL query
    #40026340
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rabbit99
... а потомков избавлю от выяснения существования непонятных объектов в базе ))
...

Делается другим способом - в теле вьюхи пишется 1 строка комментария: используется для разработки XX /отчета YYY
Прекрасно работает с БД, где кол-во объектов БД из комплекта поставки 100 тыс и более, а самописных таблиц/вьюх/пакетов - десятки тысяч. Только там еще и именовать эти объекты нужно соответствующе.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / оператор with ... as в Oracle Report Builder SQL query
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]