powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Oracle Forms 6i, execute immediate и линки
6 сообщений из 6, страница 1 из 1
Oracle Forms 6i, execute immediate и линки
    #35951668
fed0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть табличка в разных схемах
Код: plaintext
1.
create table t_emps (id number, name varchar2( 200 ))
/
Нужно выполнить запрос в формсах по всем схемам с 01 по 20:
select * from t_emps@01

Чтобы не писать данный запрос 20 раз хочется воспользоваться динамическим sql и execute immediate. В 6 формсах нет подобной конструкции, поэтому написал процедуру на сервере, которая выполняет запрос и возвращает табличкой данные:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   
   type emps_tab is table of t_emps%rowtype;
FUNCTION calc(pc_code varchar2)
     return emps_tab PIPELINED
    IS
   l_data emps_tab := emps_tab ();
   BEGIN
       l_data.DELETE;
       execute immediate(pc_code) BULK COLLECT INTO l_data;
       --
       FOR x IN l_data.FIRST .. l_data.LAST loop
            PIPE ROW(l_data(x));
       end loop;
       return;
   END;

Далее в оракле 9i удобно использовать данную конструкцию
Код: plaintext
select * from TABLE(calc('select * from t_emps@01'))
Что вернет результат селекта в виде таблички. Однако Oracle Forms 6 не воспринимает селекты из псевдо-таблиц.

Как переписать функцию (процедуру), чтобы она возвращала значения селекта, которые поймут 6 формсы?
...
Рейтинг: 0 / 0
Oracle Forms 6i, execute immediate и линки
    #35951701
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fed0rЧтобы не писать данный запрос 20 раз хочется воспользоваться динамическим sql и execute immediate. В 6 формсах нет подобной конструкции, Нет конструкции execute immediate, но динамический sql есть.
...
Рейтинг: 0 / 0
Oracle Forms 6i, execute immediate и линки
    #35951954
fed0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поподробнее можно как с помощью FORMS_DDL заполнить некоторую record данными из динамического селекта?
...
Рейтинг: 0 / 0
Oracle Forms 6i, execute immediate и линки
    #35952391
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. Built-in packages -> EXEC_SQL; DBMS_SQL и т.п.
...
Рейтинг: 0 / 0
Oracle Forms 6i, execute immediate и линки
    #35952858
VNVor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fed0rДалее в оракле 9i удобно использовать данную конструкцию
Код: plaintext
select * from TABLE(calc('select * from t_emps@01'))
Что вернет результат селекта в виде таблички. Однако Oracle Forms 6 не воспринимает селекты из псевдо-таблиц.Если этот запрос будет стоять как источник данных у блока, то все нормально выполняется. А вот в pl/sql - да, только динамическим sql выкручиваться.
...
Рейтинг: 0 / 0
Oracle Forms 6i, execute immediate и линки
    #35953078
Всегда!!!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни хрена не вижу разницы между этим
Код: plaintext
select * from TABLE(calc('select * from t_emps@01'))
и этим
Код: plaintext
select * from t_emps@ 01 
Вернее вижу, второе много лучше, так как нет лишнего гемора с типами и функциями, да и работать будет быстрее, ибо нет динамического SQL.

Поэтому лучше написать 20 раз.
А если хочется попрограммировать, то лучше написать генератор кода, который это сделает.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Oracle Forms 6i, execute immediate и линки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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