Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Последовательность запуска процедур без перерисовки всей страницы / 25 сообщений из 35, страница 1 из 2
02.04.2010, 11:13
    #36557222
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Добрый день.
Хотел бы узнать у опытных коллег рекомендации по разработке функционала следующей производственной задачи (примерный вид целевой страницы приведен на картинке):
Есть список процедур, которые нужно выполнить пользователю последовательно, дождавшись выполнения предыдущей. Эти процедуры могут работать минуты или десятки минут, так что они вызываются с использованием APEX_PLSQL_JOB.SUBMIT_PROCESS(); и поэтому ведется лог запуска и завершения задачи.
Собственно в связи с этим вопросы:
1) Было бы изящнее список задач держать в таблице и формировать его в изображенном регионе, подтягивая из логов время выполнения задач. Но как правильнее навесить выполнение кода SQL скриптов на кнопки "Выполнить", считав их из поля типа VARCHAR2(4000)?
2) Опробовав технику создания ITEM+BUTTON, не ясно, как их включить в таблицу (изображенную на картинке)?
3) Как правильнее организовать обновление региона с новыми данными статуса задач без перерисовки всей страницы? Представляется, что сабмиты здесь не нужны... т.е. вся работа осуществляется на одной странице.

Заранее спасибо. За по-шаговые указания - отдельный респект.
...
Рейтинг: 0 / 0
02.04.2010, 11:45
    #36557330
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
DrunvaloЕсть список процедур, которые нужно выполнить пользователю последовательно, дождавшись выполнения предыдущей.

0. Поясните следующий момент: пользователь самостоятельно запускает очередную процедуру P i после выполнения процедуры P i-1 , или формирует цепочку
Код: plaintext
P 1   И  P 2   И  ... И P i 
a-la конвеер команд в шелле *nix, а приложение эту цепочку обрабатывает пошагово? В зависимости от этого можно использовать разные подходы для организации интерфейса.
1. Процедуры действительно лучше держать в таблице вида (Айдишник, Имя процедуры, Описание процедуры, PL/SQL-блок). Соответственно, в лог выполнения можно заносить айдишник этой процедуры, период выполнения, результат выполнения, сообщение об ошибке etc. Кроме того, можно создать таблицу для конкретных запусков вида (Айдишник запуска, Айдишник процедуры, Пользователь, Состояние).
...
Рейтинг: 0 / 0
02.04.2010, 12:15
    #36557412
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
suPPLer, спасибо за оперативность.
Список процедур предопределен, конечные пользователи к его формированию отношения не имеют, только могут осуществлять запуск процедур. Полагаю, что Apex представляет отличный интерфейс для организации взаимодействия с конечным пользователем (запуск задач и мониторинг хода расчётов). Поскольку задачи представляют собой большие пакеты, написанные на PL/SQL, то логично и запускать из дружественной среды (Apex, например), так что shell-подход не рассматривали.
...
Рейтинг: 0 / 0
02.04.2010, 12:33
    #36557482
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
DrunvaloПоскольку задачи представляют собой большие пакеты, написанные на PL/SQL, то логично и запускать из дружественной среды (Apex, например), так что shell-подход не рассматривали.

Возникло недопонимание. :) Я за то , чтобы решение делалось в БД, потому что задача это позволяет. Меня интересует, как Вашим пользователям удобнее и правильнее работать:

0. Подход "В ручном режиме". Пользователю выдаётся на экран список задач (Ваших процедур) и кнопок "Выполнить". Активна/отображается только кнопка рядом с первой задачей. Пользователь ждёт кнопку, смотрит в потолок. Процедура выполнилась. Отображается результат выполнения, галочки-флажочки и подобное оформление. По результатам выполнения, если ошибок нет, становится активной/видимой кнопка рядом со второй задачей. Если ошибки есть - исправляем. Операция "жмём кнопку-смотрим в потолок" повторяется до успешного выполнения всего набора задач.

1. Подход "Конвеер". Это тот, к которому я привёл аналогию с шеллом в *nix. Пользователю выдаётся список задач и одна кнопка "Выполнить". Пользователь жмёт её и занимается дальше своими делами. Время от времени он может заходить на страницу с текущим выполняющимся списком задач и смотреть промежуточные и конечные результаты. Отчёт со списком задач, например, можно раз в 10 с обновлять без сабмита ($a_report для обычного отчёта / gReport.pull() для интерактивного). Можно создать HTML-регион на странице #0, который выводится при выполняющемся списке задач, в нём создать div для отображения информации о выполнении, и обновлять информацию через JS раз в 10 с. Туда же добавить ссылку / кнопку для перехода к странице с текущим выполняющимся списком задач. Можно ещё всяких вкусностей наворотить...
...
Рейтинг: 0 / 0
02.04.2010, 13:29
    #36557681
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
suPPLer,
В конечном счёте нужны будут оба варианта: 0) "Ручной режим" - для того, чтобы по результатам выполнения каждой задачи просматривать промежуточные производственные отчёты, анализировать данные, если всё хорошо - продолжать дальше; если что-то не так - возможно начинать всё с запуска первой процедуры (она сбрасывает систему в исходное состояние) 1) "Автоматический" - типа большая кнопка: "Запустить все". Поэтому для упрощения возможны два вида страницы, соответственно под эти варианты, или вообще 2 страницы разных (к ним перейдёт пользователь по ссылке в зависимости от выбранного сценария). Хотя есть соображение, чтобы пользователю предоставить возможность пару-тройку задач выполнить "вручную", а последующие - "автоматически", нажать кнопку "Запустит все". Конечно, логика работы программы должна отследить это (по логу, например, или по некой метке, хранимой тоже в какой-нибудь таблице).
...
Рейтинг: 0 / 0
02.04.2010, 13:56
    #36557776
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Drunvalo,

по сабжу я уже упомянул, обновляйте отчёты на страницах через JavaScript и функции $a_report / gReport.pull().

Вопросы ещё какие-то есть? :)
...
Рейтинг: 0 / 0
02.04.2010, 15:22
    #36558091
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
suPPLer, нюансы, видимо, в деталях... ;-)
Т.е. последовательность построения такой страницы видится следующей:
0) создаем таблицу со списком процедур (TBL_PROCEDURES), таблицу логов работы процедур (TBL_LOGS);
1) создаём пустую страницу;
2) создаём регион (Report) где указываем SELECT, объединяющий таблицу со списком процедур и таблицу логов (TBL_PROCEDURES+TBL_LOGS);
3) добавляем колонки с кнопками "Выполнить", вытаскиваем SQL-код (из поля таблицы TBL_PROCEDURES) и приворачиваем к этим кнопкам (как? здесь, видимо, не хватает ещё практических навыков у меня);
4) навешиваем функционал обновления этого региона вручную или автоматически по механизму, описанному на "http://apex.oracle.com/pls/otn/f?p=11933:40" или по механизму, приводимому вами: "...JavaScript и функции $a_report..." (надо будет посмотреть эту фичу...).
- что-то типа такого?
...
Рейтинг: 0 / 0
02.04.2010, 15:47
    #36558170
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Одно из возможных решений для ручного запуска: в выборке отчёта добавляете элемент-кнопку, например:
Код: plaintext
1.
select field1, field2, '<input type="button" value="Выполнить" onClick="javascript:doIt('||procedure_id||');">' from tbl_procedures

Javascript функция doIt(procid) устанавливает значение какого-нибудь скрытого элемента P_PROC_ID равным ID вашей процедуры, затем делает doSubmit с определённым запросом.

Процедура, которая отрабатывает по этому запросу, запускает job c процедурой, в которой использован execute immediate + код вашей процедуры, извлечённый по значению P_PROC_ID из blob.

Как-то так, если не использовать AJAX.
...
Рейтинг: 0 / 0
02.04.2010, 16:22
    #36558304
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
non-apexoidОдно из возможных решений для ручного запуска: в выборке отчёта добавляете элемент-кнопку, например:
Код: plaintext
1.
select field1, field2, '<input type="button" value="Выполнить" onClick="javascript:doIt('||procedure_id||');">' from tbl_procedures

Javascript функция doIt(procid) устанавливает значение какого-нибудь скрытого элемента P_PROC_ID равным ID вашей процедуры, затем делает doSubmit с определённым запросом.

Процедура, которая отрабатывает по этому запросу, запускает job c процедурой, в которой использован execute immediate + код вашей процедуры, извлечённый по значению P_PROC_ID из blob.
...

На этот SELECT Apex выдаёт: "...failed to parse SQL query: ORA-00972: слишком длинный идентификатор...". Может синтаксис не верен...
Чуть подробнее этот момент, плз. Или если можно, ссылку на пример какой-либо...
Я предполагаю, записывать в поле таблицы TBL_PROCEDURES описания типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
    l_sql VARCHAR2( 400 );
    l_user_name VARCHAR2( 100 ); 
    l_op_id NUMBER;
    ...
BEGIN
    ...
    l_user_name := APEX_UTIL.GET_USERNAME(APEX_UTIL.GET_CURRENT_USER_ID);
    l_sql := 'BEGIN my_package.main(param1, param2, ...); END;';
    l_job := APEX_PLSQL_JOB.SUBMIT_PROCESS(p_sql => l_sql, p_status => my_package.main is started...');
    my_package.SaveLog(l_job, l_user_name, param1, ...);  
END;
Под такие вещи и VARCHAR2(4000) хватит...
...
Рейтинг: 0 / 0
02.04.2010, 16:57
    #36558389
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Да, забыл про алиас. После '< .... >' нужно добавить алиас.
...
Рейтинг: 0 / 0
02.04.2010, 17:06
    #36558413
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Drunvalo,

в качестве примера, как делать из столбцов в отчёте что-нибудь посложнее, RTFBlog Roels Blog - Handling information overload: Showing data on demand in an IR , там столбец превращается в картинки, при наведении на которые показывается div подробной информацией. Вам понадобится столбец превратить в кнопки / ссылки (тут и Column Attributes->Link подойдёт) / картинки, по клику на которые будут запускаться процедуры.
...
Рейтинг: 0 / 0
02.04.2010, 17:20
    #36558447
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
non-apexoid ...Javascript функция doIt(procid) устанавливает значение какого-нибудь скрытого элемента P_PROC_ID равным ID вашей процедуры, затем делает doSubmit с определённым запросом.

Процедура, которая отрабатывает по этому запросу, запускает job c процедурой, в которой использован execute immediate + код вашей процедуры, извлечённый по значению P_PROC_ID из blob...
.

Если не затруднит, по-шагово прокомментируете?
...
Рейтинг: 0 / 0
02.04.2010, 17:22
    #36558455
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
suPPLerDrunvalo,

...RTFBlog Roels Blog - Handling information overload: Showing data on demand in an IR , там столбец превращается ... в кнопки / ссылки (тут и Column Attributes->Link подойдёт) / картинки, по клику на которые будут запускаться процедуры.
Спасибо за ссылку. Будем изучать матчасть...
...
Рейтинг: 0 / 0
02.04.2010, 17:31
    #36558482
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
non-apexoidПроцедура, которая отрабатывает по этому запросу, запускает job c процедурой, в которой использован execute immediate + код вашей процедуры, извлечённый по значению P_PROC_ID из blob .
Два небольших замечания: из CLOB и начиная с 11g.

DrunvaloЕсли не затруднит, по-шагово прокомментируете?
Вам, КМК, больше подойдёт вызов процесса приложения через AJAX и htmldb_Get. Только первым делом запускаемая процедура должна где-нибудь отмечать, что в наборе уже есть выполняемая задача, и последним - снимать пометку. А запрос, формирующий список задач для отчёта, эту пометку должен учитывать и вместо ссылок / картинок / кнопок выдавать что-нибудь некликабельное у всех процедур, кроме той, что выполняется. У выполняющейся может выводить анимированный gif вроде такого...
...
Рейтинг: 0 / 0
02.04.2010, 22:25
    #36558864
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
И действительно, при таком подходе никакой blob/clob не нужен. Итак:
1. процедуры можно держать в varchar;
2. использование htmldb_Get красиво, но как быстрое и лёгкое в отладке решение пойдёт и предложенный мной вариант;
3. А вот обновление отчёта со списком задач лучше сразу сделать через $a_report по таймеру.
...
Рейтинг: 0 / 0
06.04.2010, 00:01
    #36562191
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
suPPLernon-apexoidПроцедура, которая отрабатывает по этому запросу, запускает job c процедурой, в которой использован execute immediate + код вашей процедуры, извлечённый по значению P_PROC_ID из blob .
Два небольших замечания: из CLOB и начиная с 11g.

DrunvaloЕсли не затруднит, по-шагово прокомментируете?
Вам, КМК, больше подойдёт вызов процесса приложения через AJAX и htmldb_Get. Только первым делом запускаемая процедура должна где-нибудь отмечать, что в наборе уже есть выполняемая задача, и последним - снимать пометку. А запрос, формирующий список задач для отчёта, эту пометку должен учитывать и вместо ссылок / картинок / кнопок выдавать что-нибудь некликабельное у всех процедур, кроме той, что выполняется. У выполняющейся может выводить анимированный gif вроде такого...

Был не в сети... В продолжении темы, коллеги, не сочтите за назойливость (в учебных целях и многим моим коллегам по работе будет интересно, осваивающим Apex). По реализации подробнее бы хотелось услышать. (Кстати, среда Oracle 10.2). Я остановился на этапе вывода отчета, как на картинке показано. В hidden поле имеется для каждой строки считанная текстовка SQL-процедур (VARCHAR2(4000)) и в еще одном hidden procedure_id (нужен ли? ведь текст уже считан...).
В заголовке страницы добавляем типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<script type="text/javascript">   
<!--   
function doIt(procedure_id)
{
   alert('procedure_id='+procedure_id);
}
//-->   
</script>  
Нажимаем кнопку - сообщение с procedure_id, соответствующим каждой строке видим.
Собственно, далее что делаем? Как это в динамике с процессами и doSubmit увязываем?
...
Рейтинг: 0 / 0
06.04.2010, 09:41
    #36562469
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Ну очень кратце. Действительно, есть 2 подхода: с асинхронным обменом с использованием htmldb_Get (ну или jApex, с этим не знаком) +pl/sql процедура уровня приложения и 2-й путь - всё-таки с сабмитом и выполнением процедуры уровня страницы. Пару слов о втором способе. Вообще, сам текст процедуры именно в отчёте вам не нужен совсем, так просто вы его _не_выполните_. Итак, doSubmit('REQUEST'). При этом по условию этого запроса у вас должна сработать процедура уровня страницы, в которой и будет выполнена уже ваша процедура.
...
Рейтинг: 0 / 0
06.04.2010, 11:11
    #36562732
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
non-apexoid...Пару слов о втором способе. Вообще, сам текст процедуры именно в отчёте вам не нужен совсем, так просто вы его _не_выполните_. Итак, doSubmit('REQUEST'). При этом по условию этого запроса у вас должна сработать процедура уровня страницы, в которой и будет выполнена уже ваша процедура.

Итак,
1) создаём процесс:
Application xxx>Page xxx>Create Page Process
Выбираем тип: "PL/SQL"
Point: "On Submit - After Computations and Validations"
Enter PL/SQL Page Process: "..." - вот тут мы должны изобрести некую оболочечную процедуру, которая по передаваемому параметру найдет текст выполнения соответствующей задачи в таблице TBL_PROCEDURES и запустит его... Так? Кстати, из какой переменной считать этот параметр procedure_id?
2) А сейчас как привязать нажатие какой-либо кнопки с вызовом этой процедуры?
...
Рейтинг: 0 / 0
06.04.2010, 11:45
    #36562883
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Drunvalo,
1. В отчёте делаем поле '<input type="button" value="Выполнить" onClick="doIt('||procedure_id||')>" - т.е. при нажатии кнопки должен отработать javascript:doIt(ID_ПРОЦЕДУРЫ)
2. Сам скрипт должен запомнить значение ID процедуры в скрытом элементе P1_PROC_ID и сделать submit с определенным запросом, например, 'DOIT':
Код: plaintext
1.
2.
3.
4.
function doIt(procid) {
  $x('P1_PROC_ID').value=procid;
  doSubmit('DOIT');
}
3. Создаём процедуру уровня страницы "On Submit - After Computations and Validations" c Condition Type=request=Expresion1, в Expression1 пишем DOIT. Таким образом, процедура будет вызвана обработчиком, если request при сабмите будет равен DOIT, то есть при нажатии кнопки.

4. В этой процедуре по ID выбираем текст процедуры в строку и т.д.

Пара замечаний:
-действительно, можно работать и не с ID, а с текстом процедуры
- а лучше, хранить не текст процедуры-обёртки, а наименование вызываемой внутри неё процедуры и описание параметров, обёртку формировать динамически, так универсальнее.
...
Рейтинг: 0 / 0
06.04.2010, 12:31
    #36563037
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Да, всё-таки ID процедуры, в противном случае получится такая дырища для sql injection
...
Рейтинг: 0 / 0
06.04.2010, 13:08
    #36563161
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
non-apexoid
2. Сам скрипт должен запомнить значение ID процедуры в скрытом элементе P1_PROC_ID и сделать submit с определенным запросом, например, 'DOIT':
Код: plaintext
1.
2.
3.
4.
function doIt(procid) {
  $x('P1_PROC_ID').value=procid;
  doSubmit('DOIT');
}
...
4. В этой процедуре по ID выбираем текст процедуры в строку и т.д.

Хорошо, уточните, плз,
- по пункту 2) P1_PROC_ID - эту вещь нужно завести как отдельный ITEM на странице (в регионе)?
- по пункту 4):
а) Создаём процедуру-оболочку (для вызова собственно задач, примерный вид которых был выше приведен...) в Edit Page Process>Source: "MY_PACKAGE.Main(:P1_PROC_ID);"
б) Её примерный текст:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
PROCEDURE  Main( P1_PROC_ID IN NUMBER ) IS
    pl_sql VARCHAR2( 2000 ):='';
BEGIN
          SELECT t.sql
          INTO pl_sql
          FROM TBL_PROCEDURES t
          WHERE t.PROC_ID=P1_PROC_ID;
      
          Execute Immediate pl_sql;
END Main;
- правильное направление действий?
...
Рейтинг: 0 / 0
06.04.2010, 13:37
    #36563262
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
1. Да, P1_PROC_ID -скрытое поле с сохранением session state
2. С процедурой не понял. Создаем процедуру уровня страницы с срабатыванием по условию, как писал выше. А вот аргументы как вы нарисовали ей не передать. Примерный каркас, если хранить текст процедуры- оболочки в БД:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
declare
  l_sql varchar2( 4000 );
begin
  select t.sql into l_sql from tbl_procedures t where t.proc_id=:P1_PROC_ID -- используем переменную привязки
  -- а вот тут ваш код по регистрации, запуску, мониторингу задач
  --  лучше использовать APEX_PLSQL_JOB
end;
3. Дерзайте, удачи.
...
Рейтинг: 0 / 0
06.04.2010, 15:45
    #36563676
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
non-apexoid
2. С процедурой не понял. Создаем процедуру уровня страницы с срабатыванием по условию, как писал выше. А вот аргументы как вы нарисовали ей не передать. Примерный каркас, если хранить текст процедуры- оболочки в БД:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
declare
  l_sql varchar2( 4000 );
begin
  select t.sql into l_sql from tbl_procedures t where t.proc_id=:P1_PROC_ID -- используем переменную привязки
  -- а вот тут ваш код по регистрации, запуску, мониторингу задач
  --  лучше использовать APEX_PLSQL_JOB
end;

Так вот эта "общая" процедура-оболочка считывает SQL-код (из таблицы) для каждой из задач и динамически его запускает:
Код: plaintext
1.
2.
3.
4.
5.
6.
...
Execute Immediate pl_sql;
...[/srr]
Кстати, для каждой задачи свой список параметров и т.д. Здесь же динамически запускается и:
[src]...
l_job := APEX_PLSQL_JOB.SUBMIT_PROCESS(p_sql => l_sql, p_status => my_package.procedure1 is started...');
...
как я приводил выше. Этот подход работает.

В целом, пристрелка прошла удачно, общий сценарий работает (правда пока по сценарию перерисовки страницы, перерисовка только региона - отложим пока на потом), пару процедур уже отладил, далее шлифовка...
Была мысль всё это расписать по шагам, с картинками и выложить где-то... Всё-таки как не хватает учебника (русскоязычного лучше), типа: "Apex: Советы бывалых" или подобного ;-).
Спасибо всем за помощь.
...
Рейтинг: 0 / 0
12.07.2010, 11:43
    #36735416
Drunvalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
Вернулся к задаче и обнаружил, что вызов процесса уровня страницы, вызываемый DoSubmit('DOIT') ("On Submit - After Computations and Validations" c Condition Type=request=Expresion1, в Expression1 пишем DOIT) отрабатывает из JavaScript чётко ($x('P_PROC_ID').value - присваивается нормально), но вот параметр P1_PROC_ID этот процесс не видит (значение его 0).
Код: plaintext
1.
2.
3.
4.
function doIt(procid) {
  $x('P1_PROC_ID').value=procid;
  doSubmit('DOIT');
}
- это работает, а вот дальше:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
declare
  l_sql varchar2( 4000 );
begin
  select t.sql into l_sql from tbl_procedures t where t.proc_id=:P1_PROC_ID -- используем переменную привязки
  -- а вот тут ваш код по регистрации, запуску, мониторингу задач
  --  лучше использовать APEX_PLSQL_JOB
end;

- не работает(!)
Перетряс настройки страницы - не помогает.
(P1_PROC_ID - скрытое поле, "Source Used": "Always, replacing any existing value in session state", "Source Type": "Always null")
Что ещё проверить?
...
Рейтинг: 0 / 0
12.07.2010, 13:08
    #36735641
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность запуска процедур без перерисовки всей страницы
А вот это Drunvalo"Source Used": "Always, replacing any existing value in session state", "Source Type": "Always null") не смущает?
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Последовательность запуска процедур без перерисовки всей страницы / 25 сообщений из 35, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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