powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / ДБ линки в sql коде репорта
22 сообщений из 22, страница 1 из 1
ДБ линки в sql коде репорта
    #38838736
seoni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день товарищи. Такой вопрос, как можно реализовать динамическое подставление дблинков в sql код отчета. То есть должен быть один созданный регион (report), где есть обычный sql запрос select from и где должен подставляться дблинк в нужных местах.
p.s. Cоздавать под каждую базу свой статичный репорт с заданным дблинком уж очень геморно, так как этих баз больше 50 :(( Как можно обойти эту проблему? Буду рад любым подсказкам)) Заранее спасибо.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38838817
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seoni,
не понял.
Репорт должен сидеть на вьюхе.
Вьюха создаётся средствами оракла. Сколько динамики даёт Оракл внутри вьюхи, столько будет и в APEX.
Т.е.:
- есть case операторы в select
- можно хранимку добавить, где будет return любая строка наружу
- можно сделать в отчёте
case :PXXXX_условие_снаружи_отчёта
Т.е. средств полно. Давай конкретнее.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38838844
seoni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123seoni,
не понял.
Репорт должен сидеть на вьюхе.
Вьюха создаётся средствами оракла. Сколько динамики даёт Оракл внутри вьюхи, столько будет и в APEX.
Т.е.:
- есть case операторы в select
- можно хранимку добавить, где будет return любая строка наружу
- можно сделать в отчёте
case :PXXXX_условие_снаружи_отчёта
Т.е. средств полно. Давай конкретнее.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38838845
seoni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123seoni,
не понял.
Репорт должен сидеть на вьюхе.
Вьюха создаётся средствами оракла. Сколько динамики даёт Оракл внутри вьюхи, столько будет и в APEX.
Т.е.:
- есть case операторы в select
- можно хранимку добавить, где будет return любая строка наружу
- можно сделать в отчёте
case :PXXXX_условие_снаружи_отчёта
Т.е. средств полно. Давай конкретнее.
Сори, если как то непонятно выразился, я новичок в этом деле)) Попробую еще раз объяснить более конкретно. Допустим есть обычный селект лист со списком баз данных, нужно чтобы при выборе нужной БД из этого селект листа, в sql код репорта select * from таблица подставлялся дблинк.
p.s. увы, лучше без хранимки реализовать, если есть такая возможность)
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38838955
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seoni,
Db link в секции from?
Или хотим менять текст запроса в from?
Тогда изврат. Делай 50 страниц или одну страницу на хранимке.
Ведь их для этого придумали.
IMHO
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38839285
mansion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
seoni,

фактически ты хочешь менять в репорте всю таблицу. не получится.

в репорт можно подставлять параметры в WHERE, можно подставлять значения в SELECT, но подставить другую таблицу ты не сможешь, т.к. в другом овнере у нее могут быть другие поля, другие атрибудты. апекс ее воспринимает как полностью другую таблицу, даже если у них одинаковые названия и кол-во полей, при замене дблинка это становится абсолютно другая таблица, как и ее соответственно репорт атрибуты.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38839286
mansion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
seoni,

вперед спамить репорты и задавать каждому условие для отображения)
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38839308
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
seoni,
Никого не слушай, все можно.
Динамически сформировать запрос в функции
Делаешь функцию, на входе у нее имя твоего дблинка, на выходе запрос.
А апексе выбираешь тип = SQL Query (PL/SQL function body returning SQL query).
Код: plsql
1.
2.
3.
Begin
	return 'select * from '||:PXXX_DBLINK_NAME||'.table where id=1';
End;
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38839411
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelНикого не слушай, все можно.
угу. И так можно:
Код: sql
1.
2.
3.
4.
5.
6.
Begin
       if 'D' then
	        return 'delete || ' * from 
       elsif 
        	return 's' || 'e' || 'l' || 'e' || 'c' || 't' || '*' || 'f' || 'r' || 'o' || 'm' 
End;

главное никого не слушать) и знать ...для какого заказчика это писать.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38839433
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Добро пожаловатть в веб.
Если нарушены правила форума, есть кнопка внизу.
Удачи!
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38839456
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seoni,

&ITEM_NAME. + Use Generic Column Names (parse query at runtime only)
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38839479
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,
разумеется мы в вебе). Чем больше решений, тем лучше.
Идеальных решений нет. А программист может всё написать.
Пусть автор решает.
Мне вот, ответ Вадиман нравится:
авторSQL - это structured query language. Ключевое слово - structured. Т.е. вы работаете не с мусором, а со структурированными данными. Т.е. с данными, имеющими структуру. Количество полей, их типы - это часть структуры. Вы не хотите их знать. Как вы хотите работать с этими данными посредством SQL?
Множественная конкатенация
ЗЫ.
Названия колонок в автомате на русском языке не работают (4.1)
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38840027
seoni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем огромное, на днях буду пробовать. Надеюсь проблему решиться, позже отпишусь.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38847540
Vortexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelseoni,
Никого не слушай, все можно.
Динамически сформировать запрос в функции
Делаешь функцию, на входе у нее имя твоего дблинка, на выходе запрос.
А апексе выбираешь тип = SQL Query (PL/SQL function body returning SQL query).
Код: plsql
1.
2.
3.
Begin
	return 'select * from '||:PXXX_DBLINK_NAME||'.table where id=1';
End;


Не получается :( Скорее всего, что-то делаю не так...
Вообщем создал итем list of values забил ему Display Value база1 и Return Value (@dblink)
Создал репорт с запросом в функции типа SQL Query (PL/SQL function body returning SQL query) такого вида:

Begin
return 'select * from dept'||:P1_dblink||';
end;

Пытаюсь сохранить репорт в результате ругается и не дает этого сделать

(Function returning SQL query: Query cannot be parsed within the Builder. If you believe your query is syntactically correct, check the generic columns checkbox below the region source to proceed without parsing.
(ORA-06550: line 2, column 38: PLS-00103: Encountered the symbol "; end; return null; end; begin wwv_flow.g_value := x; end;" when expecting one of the following: ( - + case mod new null continue avg count current max min prior sql stddev sum variance execute forall merge time timestamp interval date pipe)

Короче нубу нужен хелп и дальнейшие советы. Проблема остается открытой)
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38847541
Vortexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон, сам косякнул в коде. Все работает, спасибо.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38852464
seoni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ап теме, вновь проблема.
Создал селект лист который возвращает параметры вида @db_link.
Создал репорт регион с SQL Query (PL/SQL function body returning SQL query) самого простого вида для того, чтобы убедиться в том, что все работает
begin
return 'select * from таблица@'||:P1_db_link||'';
end;
В итоге в репорт регионе получаю ошибку:
report error:
ORA-01403: no data found
Как так ни хрена не пойму... Причем заметил, что если юзать Use Generic Column names (parse query at runtime only), а не Use Query-Specific Column Names and Validate Query, то все ок и отлично работает, но само собой колонки уже переименованы и это для меня неприемлимо...
Так в чем же может быть косяк господа? Или дайте альтернативу, как еще можно сделать нормальный отчет в который можно будет вставлять динамически дблинки.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38852478
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seoniПричем заметил, что если юзать Use Generic Column names
ничего не понял.
Там есть автоматические имена колонок в ГУИ на английском из имён полей запроса.
Работает?
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38852548
seoni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123seoniПричем заметил, что если юзать Use Generic Column names
ничего не понял.
Там есть автоматические имена колонок в ГУИ на английском из имён полей запроса.
Работает?
Ну там он именует колонки по своему, вроде формат, что то типо C_0_0, C_0_1, ..... , C_0_9 и т. д., точно не помню. Ну мне желательно, чтобы колонки имели наименование, как в БД.
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38852551
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seoni,
Как в бд он строит в момент создания отчета. Т.е
Запрос Не в динамике и склейкой текста.
Такой изврат стоит денег, т.к. отчет нужно делать через API
IMHO
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38852604
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мои две копейки:

0. Тело PL/SQL-функции в указанных условиях там не нужно, хватит простого запроса:
Код: plsql
1.
2.
select deptno "Подр№", dname "Подразделение", loc "Мест", sysdate - rownum "Дата" 
  from dept&P8_DB_LINK.


Как в выделенное поле подставить линк либо NULL, уже забота автора.
1. APEX 4.2.1, источник данных из прошлого пункта, результат прикреплён. Так что какие будут заголовки у столбцов, зависит только от автора запроса. Если запрос для всех БД одинаков, то какая разница, что работать в интерфейсе придётся, грубо говоря, с номерами вместо псевдонимов?
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38852714
seoni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerМои две копейки:

0. Тело PL/SQL-функции в указанных условиях там не нужно, хватит простого запроса:
Код: plsql
1.
2.
select deptno "Подр№", dname "Подразделение", loc "Мест", sysdate - rownum "Дата" 
  from dept&P8_DB_LINK.


Как в выделенное поле подставить линк либо NULL, уже забота автора.
1. APEX 4.2.1, источник данных из прошлого пункта, результат прикреплён. Так что какие будут заголовки у столбцов, зависит только от автора запроса. Если запрос для всех БД одинаков, то какая разница, что работать в интерфейсе придётся, грубо говоря, с номерами вместо псевдонимов?
Та же история, почему то в репорт регионе выдает ошибку
Report error:
ORA-01403:no data found
Короче буду юзать generic column и не парить себе мозг...
...
Рейтинг: 0 / 0
ДБ линки в sql коде репорта
    #38853646
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seoniТа же история, почему то в репорт регионе выдает ошибку
Report error:
ORA-01403:no data found

Для ответов на вопросы есть протоколы отладки. RTFM Accessing Debugging Mode .
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / ДБ линки в sql коде репорта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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